MySQLStorage
作为代理/团队/工作流程会话存储后端的支持。o4-mini-deep-research
和 o3-deep-research
模型的支持。PerformanceEval
上添加了 memory_growth_tracking
属性,以启用内存增长的额外调试日志。agent
和 team
作为可选参数,以提高灵活性。Agent
和 Team
都添加了 debug_level
。这是一个 int
值,可以是 1
(默认)或 2
(更详细的日志记录)。目前这仅启用了更详细的模型日志,但将来会更广泛地使用。Team
添加了 parser_model
支持。请在此处查看文档:here。Gemini
模型类添加了 thinking_budget
和 include_thoughts
参数。search_news
、search_scholar
和 scrape_webpage
。OxylabsTools
,用于为代理添加更多网页抓取功能。read_csv
方法来改进 CSV 解析。full_team_session_metrics
计算的问题。Agent
和 Team
添加了方便的函数 → add_tool(tool)
,以便在初始化后追加新工具。response_model
时不会关闭流式传输。结构化输出本身不会流式传输,但它是在运行具有流式传输的代理/团队时迭代器响应的一部分。响应模型在单个 RunResponseContentEvent
和最终的 RunResponseCompletedEvent
上设置。response_model
的 Agent
或 Team
上使用 run(..., stream=True)
或 arun(..., stream=True)
,当前行为将关闭流式传输并响应单个 RunResponse
对象。在进行了上述更改后,您将收到 Iterator[RunResponseEvent]
/ AsyncIterator[RunResponseEvent]
响应。FileTools
添加了 search
。upsert
函数未使用 filters
参数的问题。team.rename_session(...)
引发的 AttributeError
:修复了 rename_session
函数未使用 session_id
参数的问题。RunResponse
/TeamRunResponse
中添加了 store_events
参数,以选择性地添加代理/团队运行过程中发生的所有事件。csv
和 csv_url
知识库的元数据过滤支持:为这些知识库类型添加了知识过滤器支持。a
前缀:现在,asearch_knowledge_base
等函数的名称与同步版本发送到模型时相同。函数名称对于准确的函数调用很重要。agent_id
时历史记录不可用的问题。ObjectId
is not JSON serializable 的问题。agent_name
,为团队事件添加了 team_name
。还为团队成员事件添加了 team_session_id
,以表明它属于顶层团队会话。stream_member_events
,以选择性地禁用成员事件的流式传输。DocumentKnowledgeBase
添加了 async
支持。enum
支持。RunResponse
现在没有 event
属性。它仍然代表整个运行的响应。RunResponse.status
现在指示运行响应是 RUNNING
、PAUSED
还是 CANCELLED
。agent.run(..., stream=True)
或 agent.arun(..., stream=True)
,这些事件就会被流式传输。RunResponseContent
RunError
RunCancelled
ToolCallStarted
ToolCallCompleted
stream_intermediate_steps=True
:
RunStarted
RunCompleted
ReasoningStarted
ReasoningStep
ReasoningCompleted
MemoryUpdateStarted
MemoryUpdateCompleted
TeamRunResponseContent
TeamRunError
TeamRunCancelled
TeamToolCallStarted
TeamToolCallCompleted
stream_intermediate_steps=True
:
TeamRunStarted
TeamRunCompleted
TeamReasoningStarted
TeamReasoningStep
TeamReasoningCompleted
TeamMemoryUpdateStarted
TeamMemoryUpdateCompleted
WorkflowRunResponseStartedEvent
和 WorkflowRunResponseCompletedEvent
事件。async
和评估。请在此处的示例中查看:here。ExaTools
上添加了 research
工具。在此处查看有关研究如何工作的更多信息:their docs。SerperTools
工具包来搜索 Google。PDFBytesKnowledgeBase
,它允许通过字节或 IO 流而不是文件路径来摄取内存中的 PDF 内容。DaytonaTools
工具包,让代理在 Daytona 沙盒中远程执行代码。AWSSESTools
以通过 AWS SES 发送电子邮件。add_location_to_instructions
,以自动检测代理正在运行的当前位置并将其添加到系统消息中。agent
替换为 agents
,将 team
替换为 teams
,并添加了 workflows
。这现在也要求您指定要运行的代理/团队/工作流程。
http://localhost:8001/runs?agent_id=my-agent
ZepTools
以删除已弃用的功能。GmailTools
现在支持附件。fetch_with_retry
和 async_fetc_with_retry
以在 url_reader.py
中重用。XTools
添加了 search_posts
。slack
、whatsapp
等。RunResponse.to_dict()
以处理不可序列化的字段,例如 Python 枚举。SlackApp
以允许您为 Slack 创建代理!该应用允许代理响应个人消息或群聊,并创建线程来响应消息。matplotlib
的 VisualizationTools
,使代理能够制作图表。BraveSearch
的新工具包,允许代理使用 brave 搜索 api 在网上进行搜索。self.add_references=True
,也能正确传递 knowledge_filters
,这是传统 RAG 的情况(区别于 Agentic RAG)。Mem0Tools
添加了 infer 作为参数。Searxng 工具初始化:修复了 Searxng 工具初始化错误:
并添加了全面的单元测试。
修复 Gemini 的 enum 作为响应模型的错误:在 1.5.6 版本中,引入了一个 bug(bug),现在允许 enum 作为 Gemini 响应模型的数据类型。
OpenAI 解析结构化输出:随着 OpenAI 库的更改,我们不再需要单独解析结构化输出。
修复准确性评估监控:在准确性评估中添加了处理监控的逻辑,用于在运行函数中评估团队。
FastAPIApp
不再有默认的 prefix
,并且 /run
→ /runs
(即创建的运行端点是 <your_domain>/runs
)。serve_fastapi_app
已被 FastAPIApp
实例上的 .serve()
替换。serve_whatsapp_app
已被 WhatsappAPI
实例上的 .serve()
替换。arun
支持,因此它们现在可以与 async
Python 一起使用。tool_call_limit
:对 tool_call_limit
进行了改造,使其能在整个代理运行中工作。team_session_state
现在可以在团队的所有成员和子团队之间正确传播和共享。Dict[str, int]
字段(和其他 Dict 类型)的 Pydantic 模型在使用 OpenAI 和 Gemini 模型作为 response_schema
时会失败,因为模式格式不兼容。session_name
。team_session_state
,您现在必须在 Team
上设置 team_session_state
而不是 session_state
。concurrent.futures
模块来强制执行所有 Exa API 操作(搜索、获取内容、查找相似项和生成答案)的超时。get_previous_session_messages(number_of_sessions: int)
,它返回代理可以分析的消息列表。search_previous_sessions_history
启用。expire
键以在 Redis 键上设置 TTL。cache_creation_input_tokens
,以便跟踪 Anthropic 缓存写入统计信息。InferenceClient()
上的 .post
- https://discuss.huggingface.co/t/getting-error-attributeerror-inferenceclient-object-has-no-attribute-post/156682HF Inference API
提供,我们也无法再将 id: str = "jinaai/jina-embeddings-v2-base-code"
作为默认值。将默认值更改为 id: str = "intfloat/multilingual-e5-large"
。OpenAIChat
添加 role_map
:这允许使用某些不遵循 OpenAI 角色映射的模型,通过 OpenAILike
使用。content_hash
作为 ID。agent.continue_run
和 agent.acontinue_run
函数。@tool(requires_confirmation=True)
装饰函数,代理将在执行工具前等待用户确认。@tool(requires_user_input=True)
装饰函数,代理将停止并要求用户输入后再继续。@tool(external_execution=True)
装饰函数,表示您将在代理上下文之外执行此函数。UserControlFlowTools()
,使代理能够动态停止流并按需要求用户输入。FirecrawlTools
中 Firecrawl 网页搜索的支持。include_tools
和 exclude_tools
。FastAPIApp
→ 一个非常简单的 FastAPI 服务器,提供对您的 agent
或 team
的访问。WhatsappAPIApp
→ 一个实现 Whatsapp 协议的应用,允许您在 Whatsapp 上运行 Agno 代理。支持图像/音频/视频输入,并可以生成图像作为响应。支持推理。cosmos_compatibility=True
来支持 cosmosdb mongo vcore。pdf
和 text
S3 读取器添加了异步支持。stop_after_tool_call
和 show_result
:现在,基础的 Toolkit 类具有类似于 @tool
装饰器的 stop_after_tool_call_tools
和 show_result_tools
。hybrid_search
支持。PerfEval
重命名为 PerformanceEval
。agent
、prompt
和 expected_answer
。stream=True
)期间删除了某些事件中的重复信息。现在,单个事件将包含更多相关数据。Agent
和 Team
的 session_data
添加了 current_user_id
和 current_session_id
作为默认变量。abc.-.xyz.pdf
和 abc.-.def.pdf
)由于读取器使用格式化名称作为唯一的 ID 而导致唯一性冲突,因此被错误地识别。在所有读取器中引入了唯一的文档 ID,使用 uuidv4()
来确保严格的识别和防止冲突。OpenAIChat
模型的代理提示的 File
的支持。retriever
参数现在可以是一个 async
函数,用于 agent.arun
和 agent.aprint_response
。Video(url=...)
的支持。OpenAIResponses
上高级推理模型的 broken tool use。agent.acli_app
调用 MCPTools
时对 MCPTools
的支持。Toolkits
和自定义工具。请参阅此示例:this example。PubmedTools
添加了扩展结果集。OpenAITools
以通过 OpenAI 的 API 实现文本转语音和图像生成。ZepTools
和 AsyncZepTools
,以使用 zep-cloud
为您的代理管理内存。include_tools
和 exclude_tools
。这允许选择性地启用/禁用工具包中的工具,这对于较大的工具包尤其有用。Memory
一起使用时的 deepcopy
问题。Memory
而不是已弃用的 AgentMemory
.- agent.memory.messages
→ run.messages for run in agent.memory.runs
(或 agent.get_messages_for_session()
)- create_user_memories
→ enable_user_memories
,现在直接在 Agent/Team 上设置。- create_session_summary
→ enable_session_summaries
,现在直接在 Agent/Team 上设置。stream/non-stream
、async/non-async
的 RunResponse
上的 reasoning_content
。Reasoning events
中统一所有推理类型的 JSON 结构。webbrowser
工具供代理与 Web 进行交互。proxy
参数支持,用于网络定制。client_params
参数中传递的 client_params
,以获得更灵活的配置。mode
属性,以增强团队配置。__all__
显式导出符号。Memory
的存储提供商。请参见此处:here。agent.get_session_summary()
→ 用于从代理获取上一会话摘要。agent.get_user_memories()
→ 用于获取当前用户的记忆。MemoryManager
或 SessionSummarizer
添加其他说明。add_member_tools_to_system_message
以从提供给团队领导者的系统消息中删除成员工具名称,这允许灵活性,使团队传输函数在更多情况下工作。Team
添加了 knowledge
,以更好地与 Agent
的功能保持一致。这附带了 retriever
用于设置自定义检索器,以及 search_knowledge
用于启用代理式 RAG。OpenAIResponses
和 OpenAIChat
。GithubTools
添加了更多功能。timezone_identifier
参数,以将时区与当前日期一起包含在说明中。ReasoningTools
,用于代理的高级推理记事本。gemini-2.0-flash-exp-image-generation
模型直接从 Gemini 生成图像 的支持。@tool
装饰器的自定义函数都有结果缓存。请在此处查看文档:here。async-await
,因此将在 agent.arun
和 agent.aprint_response
中使用。这也意味着 knowledge_base.aload()
是可能的,这在某些情况下应大大提高加载速度。已转换以下内容:
JSONKnowledgeBase
→ 此处有一个 cookbook 来说明如何使用它:Here。PDFKnowledgeBase
→ 此处有一个 cookbook 来说明如何使用它:Here。PDFUrlKnowledgeBase
→ 此处有一个 cookbook 来说明如何使用它:Here。CSVKnowledgeBase
→ 此处有一个 cookbook 来说明如何使用它:Here。CSVUrlKnowledgeBase
→ 此处有一个 cookbook 来说明如何使用它:Here。ArxivKnowledgeBase
→ 此处有一个 cookbook 来说明如何使用它:Here。WebsiteKnowledgeBase
→ 此处有一个 cookbook 来说明如何使用它:Here。YoutubeKnowledgeBase
→ 此处有一个 cookbook 来说明如何使用它:Here。TextKnowledgeBase
→ 此处有一个 cookbook 来说明如何使用它:Here。Team
添加了 tools
和 tool_call_limit
。这意味着团队领导者本身也可以拥有用户提供的工具,从而可以充当代理。MCPTools
,允许您指定要特别包含或排除在 MCP 服务器所有可用工具中的工具。这对于限制模型可访问的工具非常有价值。@tool()
装饰器现在支持异步函数,包括异步预钩子和后钩子。tool_choice
,因为它不受支持。entity_id
映射。print_response
和 aprint_response
时显示工具调用的方式。现在,它们显示在不同于响应面板的单独面板中。它也可以与 response_model
结合使用。Team
。debug_mode=True
和 team.print_response(...)
来查看其运行情况。Agent(team=[])
,但已被弃用(见下文)。OpenAILike
接口。Agent
和 Team
添加了 use_json_mode: bool = False
参数,该参数与 response_model=YourModel
结合使用,用于指示代理/团队模型是否应强制以 json 而不是(现在默认的)结构化输出来响应。之前的行为默认为“json-模式”,但由于大多数模型现在支持原生结构化输出,我们现在默认使用原生结构化输出。由于现在只需要设置 response_model
,因此使用响应模型也变得更加简单。不再需要设置 structured_output=True
来专门从模型获取结构化输出。WebsiteTools
添加了更新组合知识库的功能。get_message_pairs()
获取错误消息的问题。Agent.structured_output
已被 Agent.use_json_mode
替换。这将在未来的主要版本发布中删除。Agent.team
已被弃用。这将在未来的主要版本发布中删除。File
对象。File
对象附加到代理提示时从 Claude 响应中提取文档引用的支持。File
类型,可以添加到提示中并发送到模型提供商。目前仅支持 Gemini 和 Anthropic Claude。音频响应:代理现在可以提供音频响应(支持流式和非流式)。
音频可在 agent.run_response.response_audio
中找到。
这仅适用于具有 gpt-4o-audio-preview
模型的 OpenAIChat
。请参阅其文档:their docs 了解更多关于其工作原理的信息。例如:
在 Agent Playground 上查看 audio_conversation_agent cookbook 进行测试。
Together.ai 和 XAi 的图像理解支持:您现在可以使用 XAi 和 Together.ai 的模型向代理提供图像。
o3 模型的推理:为 OpenAI 的 o3 模型添加了推理支持。
Gemini embedder 更新:更新 GeminiEmbedder
以使用新的 Google genai SDK。此更新在接口上引入了一个细微的变化:
on_bad_vectors
作为参数。Agent UI 中的文件/图像上传:Agent UI 现在支持文件和图像上传与提示。
.pdf
、.csv
、.txt
、.docx
、.json
.png
、.jpeg
、.jpg
、.webp
Firecrawl 自定义 API URL:允许用户为 Firecrawl 设置自定义 API URL。
更新 ModelsLabTools
工具包构造函数:/libs/agno/tools/models_labs.py
中的构造函数已更新,以适应音频生成 API 调用。这是一个重大更改,因为 ModelsLabTools
类的参数已更改。已删除 url
和 fetch_url
参数,现在根据用户提供的 file_type
来决定 API URL。
FileType
枚举现在包括 MP3
类型:
MistralEmbedder
实例化的相关问题。AwsBedrock
外,所有模型均支持 async-await。exponential_backoff
为 True
,代理现在将选择重试,并带有指数退避。GoogleSearch
的名称为 GoogleSearchTools
以实现一致性。Gemini
已被 Google SDK 实现的 Gemini
取代。Gemini
已被 Google SDK 实现的 Gemini
取代。OllamaHermes
已被移除,因 Ollama
的实现已得到改进。name_exists
函数。run_messages.messages
的错误。agent.arun()
和 agent.aprint_response()
支持异步执行。agent.arun()
和 agent.aprint_response()
支持异步执行。retriever
参数的代理添加了小的修复和示例。这是从 phidata
到 agno
的主要重构,随 Agno AI 正式发布而发布。
有关其他指导,请参阅 迁移指南。
phi.model.x
→ agno.models.x
phi.knowledge_base.x
→ agno.knowledge.x
(适用于所有知识库)
phi.document.reader.xxx
→ agno.document.reader.xxx_reader
(适用于所有文档读取器)
所有 Agno 工具包现在都带有 Tools
后缀。例如:DuckDuckGo
→ DuckDuckGoTools
多模态接口更新:
agent.run(images=[])
和 agent.print_response(images=[])
现在是 Image
类型。
agent.run(audio=[])
和 agent.print_response(audio=[])
现在是 Audio
类型。
agent.run(video=[])
和 agent.print_response(video=[])
现在是 Video
类型。
RunResponse.images
现在是 ImageArtifact
类型的列表。
RunResponse.audio
现在是 AudioArtifact
类型的列表。
RunResponse.videos
现在是 VideoArtifact
类型的列表。
RunResponse.response_audio
现在是 AudioOutput
类型。
模型:
Hermes
→ OllamaHermes
AzureOpenAIChat
→ AzureOpenAI
CohereChat
→ Cohere
DeepSeekChat
→ DeepSeek
GeminiOpenAIChat
→ GeminiOpenAI
HuggingFaceChat
→ HuggingFace
Embedder 现在都接受 id
而不是 model
作为参数。例如:
Agent Storage 类
PgAgentStorage
→ PostgresDbAgentStorage
SqlAgentStorage
→ SqliteDbAgentStorage
MongoAgentStorage
→ MongoDbAgentStorage
S2AgentStorage
→ SingleStoreDbAgentStorage
Workflow Storage 类
SqlWorkflowStorage
→ SqliteDbWorkflowStorage
PgWorkflowStorage
→ PostgresDbWorkflowStorage
MongoWorkflowStorage
→ MongoDbWorkflowStorage
Knowledge Base
phi.knowledge.pdf.PDFUrlKnowledgeBase
→ agno.knowledge.pdf_url.PDFUrlKnowledgeBase
phi.knowledge.csv.CSVUrlKnowledgeBase
→ agno.knowledge.csv_url.CSVUrlKnowledgeBase
读取器
phi.document.reader.arxiv
→ agno.document.reader.arxiv_reader
phi.document.reader.docx
→ agno.document.reader.docx_reader
phi.document.reader.json
→ agno.document.reader.json_reader
phi.document.reader.pdf
→ agno.document.reader.pdf_reader
phi.document.reader.s3.pdf
→ agno.document.reader.s3.pdf_reader
phi.document.reader.s3.text
→ agno.document.reader.s3.text_reader
phi.document.reader.text
→ agno.document.reader.text_reader
phi.document.reader.website
→ agno.document.reader.website_reader
Embedder
类从 pydantic 移至数据类Assistant
的所有引用。llm
的所有引用。PhiTools
工具。Agent
类上,guidelines
、prevent_hallucinations
、prevent_prompt_leakage
、limit_tool_access
和 task
已被移除。您可以根据需要将它们合并到 instructions
参数中。similarity_threshold
参数替换为 threshold
参数来修复语义分块。