EDSL(Expected Parrot 领域特定语言)
用 Python DSL 设计、运行并分析由大量 AI 代理和多个大语言模型作答的调查与实验,模拟社会科学和市场研究。
证据显示数据流有文档(远程缓存、密钥管理页面),MIT 许可署名三位作者;但默认远程推理与自动上传结果到 Expected Parrot 服务器缺乏明确的用户确认/选择退出说明(tests 中可见 disable_remote_inference 选项,但 README 未强调默认行为),扣分;调查数据上传至第三方服务器,敏感数据处理仅有一句'securely manage keys',证据薄;依赖以范围锁定并模块化为可选 extras,但无 lockfile/审计证据;远程缓存提供可复现性但无撤销/删除已上传结果的说明。
tests/agents 下有较完整的单元测试覆盖序列化、异常、JSONL 往返等,自定义异常类(AgentNameError 等)表明失败信息经过设计;CI 在三平台四 Python 版本上验证构建与导入;但均为静态审阅,未执行测试,且 self-hosted runner 测试仅在含 'coopr' 的 commit 消息时触发,覆盖范围存疑,扣分。
受众与场景描述充分(社科、市场研究、数据标注),示例覆盖多种问题类型与模型;明确警示 AI 模拟回答不代表真实人群意见,边界说明良好;但 README 写 Python 3.9–3.13,pyproject 要求 >=3.10,<3.14,环境要求自相矛盾,扣分。
许可为 MIT 且含具名版权人;安装说明、文档链接、入门教程齐全,示例带可复现输出并附 Coop 链接,examples 得高分;但仓库内未见 CHANGELOG,版本号为 1.0.8.dev1(开发版),版本化/变更日志扣分;维护责任依赖外部网站与 Discord,仓库内治理信息薄。
输出为结构化数据集,内置 select/可视化/HTML 导出(tests 验证 to_html/save_html/JSONL),可用性证据充分得 3;相对直接调用 LLM API 的边际价值在于声明式问题类型、 piping、缓存与协作平台,但核心价值依赖其专有服务器生态,成本收益文档只提及免费额度与用量跟踪,细节不足,扣分。
README 中每个功能示例均附 Coop 查看链接,可追溯;README、pyproject、tests 三处相互印证(除 Python 版本不一致外);文档明确区分'AI 统计模式模拟'与'真实人群数据',事实与推断分离做得较好;但所有输出示例为静态展示,无法静态验证其真实性,扣分。
- 默认行为疑似将调查数据与提示词上传至 Expected Parrot 远程服务器并缓存,使用前请确认远程推理/缓存的开闭方式及数据删除途径。
- README 声称支持 Python 3.9,但 pyproject 要求 >=3.10,部署前以 pyproject 为准。
- 当前版本号为 1.0.8.dev1 开发版,且仓库内未见变更日志,生产使用需谨慎。
- Agent 模拟回答仅为统计模式,不可作为真实人群意见的证据,作者自己也如此声明。
- 发布方身份未经企业注册库验证,核心工作流依赖其专有平台生态。
这个 Agent 能做什么,适合哪些场景?
EDSL 是 Expected Parrot 开源的 Python 领域特定语言(MIT 许可),用于以 AI 代理和 LLM 规模化开展计算社会科学与市场研究。开发者用声明式的问题类型(如 QuestionMultipleChoice、QuestionFreeText、QuestionLinearScale)构造问卷,用 Agent/AgentList 定义带特质的人物设定,用 ScenarioList 对提示进行参数化,并用 Model/ModelList 同时调用多个模型(如 gpt-4o、gemini-1.5-flash)。Survey 对象支持管道传值与跳转逻辑,可运行复杂的数据标注流程。结果以结构化数据集返回,内置分析、可视化与选择方法,并可通过 select() 提取字段。API 调用自动缓存;远程运行时结果连同经验证的提示与时间戳存储在 Expected Parrot 服务器的通用远程缓存中,供他人免费复现。用户可选择本地运行或使用 Expected Parrot 服务器,并在 Coop 平台分享工作流和结果。
通过 pip 安装 edsl 后,用户以 Python 代码声明问题对象(QuestionMultipleChoice、QuestionFreeText、QuestionList、QuestionLinearScale 等),用 ScenarioList.from_list 等方法导入 CSV、PDF、PNG 等数据源并将 {{ scenario.field }} 占位符注入提示词,用 Agent(traits=...) 构造代理画像并通过 q.by(al).run() 或 survey.run() 执行。Survey 支持管道(如 {{ color.answer }})和跳过/停止规则。运行结果可通过 results.select("persona", "example") 查询。可使用自有 LLM API 密钥或 Expected Parrot 密钥统一访问多个模型;注册账号后可在远程缓存中复现结果,并在 Coop 上分享工作流。
- 社会科学研究者:在大规模收集真实被试前,用带人物特质的 AI 代理原型化和预测试问卷。
- 市场研究团队:让多个 LLM(如 gpt-4o 与 gemini-1.5-flash)同时回答同一份问卷并比较回答差异。
- 数据标注工程师:利用管道传值与跳转/停止逻辑构建多步骤的数据标注流程。
- LLM 评测者:在统一接口下批量对比多个模型对同一提示的输出。
- 研究团队协作:把调查代码与结果上传到 Coop,让任何人凭代码免费检索完全一致的输出。
- 合成数据生成者:用场景参数化批量生成结构化的模拟回答数据集。
这个 Agent 有哪些优点和局限?
- 声明式问题类型保证结果格式一致,无需手写 JSON schema。
- 自动缓存 API 调用,远程结果带经验证的提示与时间戳,他人可免费、零配置复现精确输出。
- 一个统一接口同时运行多个模型与多个代理,便于横向比较回答。
- 内置管道传值与跳过/停止逻辑,可直接搭建多步骤数据标注流程。
- 通过 Expected Parrot 密钥可访问所有可用模型,并集中管理团队的密钥、费用与用量。
- 完整体验依赖 Expected Parrot 账号和服务器(远程缓存、Coop),存在平台耦合。
- 需要 LLM API 密钥,实际使用会产生模型调用费用,成本取决于所选模型与规模。
- AI 代理回答基于训练数据中的统计模式,不能代表真实人群意见,测量真实态度时需人工数据验证。
- Python 3.9–3.13 之外的运行环境不受支持。
- README 未提供与外部数据分析栈(如 pandas、SQL)集成的具体说明,需自行评估。
如何安装或部署这个 Agent?
- 确认 Python 版本在 3.9–3.13 之间。2. 运行
pip install edsl。3. 准备 LLM API 密钥:可使用自有密钥(如 OpenAI),或在 expectedparrot.com 注册账号获取一个可访问全部可用模型的 Expected Parrot 密钥。4. 在 expectedparrot.com/login 创建账号以启用远程缓存和 Coop 分享功能。
如何使用这个 Agent?
最小示例:python\nfrom edsl import QuestionMultipleChoice\nq = QuestionMultipleChoice(\n question_name="example",\n question_text="How do you feel today?",\n question_options=["Bad", "OK", "Good"]\n)\nresults = q.run()\nresults.select("example")\n 多代理与多模型:用 AgentList 构造人物画像、ModelList 指定多个模型,然后用 q.by(al).by(ml).run() 执行。入门请参考官方 starter tutorial;调查可在本地运行,也可登录后远程运行以获得缓存与复现能力。
这个 Agent 与同类方案有什么区别?
README 未直接点名竞品,但其定位(用 LLM 与 AI 代理模拟调查实验的 Python DSL)与传统人工调查平台和人工众包标注形成对照:EDSL 用 AI 模拟回答实现零边际成本的预测试与原型设计,但明确要求用真实人类数据验证实际态度与行为。