自定义输出格式

默认情况下,代理返回纯文本输出。但你可以定义一个结构化的输出格式,以便简化后续处理。


自定义输出格式

通过这个示例,你可以定义代理应返回的输出格式。

代码示例

  1. from pydantic import BaseModel
  2. # 定义输出格式,使用 Pydantic 模型
  3. class Post(BaseModel):
  4. post_title: str
  5. post_url: str
  6. num_comments: int
  7. hours_since_post: int
  8. class Posts(BaseModel):
  9. posts: List[Post]
  10. controller = Controller(output_model=Posts)
  11. async def main():
  12. task = '访问 Hacker News 的 Show HN 页面,并获取前 5 篇帖子'
  13. model = ChatOpenAI(model='gpt-4o')
  14. agent = Agent(task=task, llm=model, controller=controller)
  15. history = await agent.run()
  16. result = history.final_result()
  17. if result:
  18. parsed: Posts = Posts.model_validate_json(result)
  19. for post in parsed.posts:
  20. print('\n--------------------------------')
  21. print(f'标题: {post.post_title}')
  22. print(f'链接: {post.post_url}')
  23. print(f'评论数: {post.num_comments}')
  24. print(f'发布时长 (小时): {post.hours_since_post}')
  25. else:
  26. print('无结果')
  27. if __name__ == '__main__':
  28. asyncio.run(main())

说明

  • Post 类定义了每个帖子的结构,包括标题、链接、评论数和发布时间(小时数)。
  • Posts 类是 Post 的列表,用于存储多个帖子的信息。
  • Controller 通过 output_model=Posts 指定了自定义输出格式。
  • main() 函数中,代理执行任务并返回结果,然后使用 Posts.model_validate_json(result) 解析 JSON 数据。
  • 最后,遍历解析后的数据并打印结果。