使用Agno實現AI代理設計的五個層級,由易到難
AI代理設計指南
本指南將代理設計分解為五個實際難度級別,每個級別均提供可運行的代碼示例。
無論開發者是初學者還是處理現實世界的復雜任務,本指南都能幫助避免常見陷阱,構建真正有效的代理。
這些級別包括:
?級別1:帶工具和指令的代理?級別2:帶知識和記憶的代理?級別3:帶長期記憶和推理的代理?級別4:多代理團隊?級別5:代理系統
以下逐一介紹各級別。
圖片
級別1:帶工具和指令的代理
此級別為基礎設置,涉及一個遵循指令并在循環中調用工具的大語言模型(LLM)。當提到“代理是LLM加上工具使用”時,通常指這一級別,反映了基礎但功能有限的實現。
圖片
指令明確代理的任務,工具賦予其行動能力,例如獲取數據、調用API或觸發工作流程。盡管簡單,此設置已足以自動化某些任務。
from agno.agent importAgent
from agno.models.openai importOpenAIChat
from agno.tools.duckduckgo importDuckDuckGoTools
agno_assist =Agent(
name="Agno AGI",
model=OpenAIChat(id="gpt-4.1"),
descriptinotallow=dedent("""\
Agno AGI是一個利用Agno框架構建代理的自主AI代理。其目標是通過提供解釋、可運行的代碼示例以及可選的視覺和音頻解釋,幫助開發者理解和使用Agno的關鍵概念。"""),
instructinotallow="搜索網絡以獲取關于Agno的信息。",
tools=[DuckDuckGoTools()],
add_datetime_to_instructinotallow=True,
markdown=True,
)
agno_assist.print_response("Agno是什么?", stream=True)
級別2:帶知識和記憶的代理
許多任務需要模型不具備的外部信息。由于上下文容量有限,代理需在運行時獲取知識,這通過代理式RAG或動態少樣本提示實現。
圖片
搜索采用混合模式(全文+語義),并需重新排序。混合搜索結合重新排序是代理式檢索的最佳即插即用方案。
存儲功能為代理提供記憶。LLM默認無狀態,存儲過去的行動、消息和觀察結果使代理具備狀態,能夠參考歷史信息并優化決策。
... imports
# 可參考 https://docs.agno.com/llms-full.txt 獲取完整文檔
knowledge_base =UrlKnowledge(
urls=["https://docs.agno.com/introduction.md"],
vector_db=LanceDb(
uri="tmp/lancedb",
table_name="agno_docs",
search_type=SearchType.hybrid,
embedder=OpenAIEmbedder(id="text-embedding-3-small"),
reranker=CohereReranker(model="rerank-multilingual-v3.0"),
),
)
storage =SqliteStorage(table_name="agent_sessions", db_file="tmp/agent.db")
agno_assist =Agent(
name="Agno AGI",
model=OpenAIChat(id="gpt-4.1"),
descriptinotallow=...,
instructinotallow=...,
tools=[PythonTools(),DuckDuckGoTools()],
add_datetime_to_instructinotallow=True,
# 當提供“knowledge”時,默認啟用代理式RAG
knowledge=knowledge_base,
# 將代理會話存儲在sqlite數據庫中
storage=storage,
# 將聊天歷史添加到消息中
add_history_to_messages=True,
# 歷史運行次數
num_history_runs=3,
markdown=True,
)
if __name__ =="__main__":
# 加載知識庫,首次運行后可注釋
# agno_assist.knowledge.load(recreate=True)
agno_assist.print_response("Agno是什么?", stream=True)
級別3:帶長期記憶和推理的代理
長期記憶使代理能夠跨會話回憶細節,例如用戶偏好、過去行為或失敗嘗試,并隨時間適應,從而實現個性化和連續性。自我學習——基于過去經驗優化行為——是此級別的重要潛力。
圖片
推理能力進一步提升代理表現,幫助分解問題、優化決策并更可靠地執行多步驟指令。推理不僅關乎理解,還能提高每一步的成功率,是嚴肅代理開發者必須掌握的核心技能。
... imports
knowledge_base =...
memory =Memory(
# 使用任意模型創建記憶
model=OpenAIChat(id="gpt-4.1"),
db=SqliteMemoryDb(table_name="user_memories", db_file="tmp/agent.db"),
delete_memories=True,
clear_memories=True,
)
storage =...
agno_assist =Agent(
name="Agno AGI",
model=Claude(id="claude-3-7-sonnet-latest"),
# 用于記憶的用戶ID
user_id="ava",
descriptinotallow=...,
instructinotallow=...,
# 賦予代理推理能力
tools=[PythonTools(),DuckDuckGoTools(),
ReasoningTools(add_instructinotallow=True)],
...
# 將記憶存儲在sqlite數據庫中
memory=memory,
# 讓代理管理其記憶
enable_agentic_memory=True,
)
if __name__ =="__main__":
# 首次運行后可注釋,代理會記住
agno_assist.print_response("總是以‘hi ava’開始你的消息", stream=True)
agno_assist.print_response("Agno是什么?", stream=True)
級別4:多代理
代理在專注于單一領域并配備精簡工具集(理想少于10個)時表現最佳。為應對復雜或廣泛任務,可將多個代理組成團隊,每個代理處理問題的一部分,共同覆蓋更廣領域。
圖片
然而,若團隊領導者缺乏強大推理能力,處理細微問題時易失敗。當前,自主多代理系統的可靠性不足,成功率低于50%,尚無法滿足實際需求。
某些架構可簡化協調。例如,Agno支持協調、路由和協作三種執行模式,并提供內置的記憶和上下文管理。謹慎設計仍不可或缺,但這些功能使多代理工作更具可行性。
... imports
web_agent =Agent(
name="Web Search Agent",
role="處理網頁搜索請求",
model=OpenAIChat(id="gpt-4o-mini"),
tools=[DuckDuckGoTools()],
instructinotallow="始終包含來源",
)
finance_agent =Agent(
name="Finance Agent",
role="處理金融數據請求",
model=OpenAIChat(id="gpt-4o-mini"),
tools=[YFinanceTools()],
instructinotallow=[
"你是一個金融數據專家。提供簡潔準確的數據。",
"使用表格展示股票價格、基本面(市盈率、總市值)",
],
)
team_leader =Team(
name="Reasoning Finance Team Leader",
mode="coordinate",
model=Claude(id="claude-3-7-sonnet-latest"),
members=[web_agent, finance_agent],
tools=[ReasoningTools(add_instructinotallow=True)],
instructinotallow=[
"使用表格展示數據",
"僅輸出最終答案,不包含其他文本。",
],
show_members_respnotallow=True,
enable_agentic_cnotallow=True,
add_datetime_to_instructinotallow=True,
success_criteria="團隊已成功完成任務。",
)
if __name__ =="__main__":
team_leader.print_response(
"""\
分析近期美國關稅對以下關鍵行業市場表現的影響:
-鋼鐵和鋁業:(X, NUE, AA)
-技術硬件:(AAPL, DELL, HPQ)
對每個行業:
1.比較關稅實施前后的股票表現
2.識別供應鏈中斷和成本影響百分比
3.分析公司的戰略應對(回岸生產、價格調整、供應商多元化)""",
stream=True,
stream_intermediate_steps=True,
show_full_reasnotallow=True,
)
級別5:代理系統
代理系統標志著代理從工具轉變為基礎設施。此級別涉及完整API,接受用戶請求,啟動異步工作流程,并流式返回生成的結果。
圖片
理論上流程清晰,實際操作極具挑戰。需在請求時持久化狀態,啟動后臺作業,跟蹤進度,并流式輸出結果。WebSocket可提供支持,但擴展和維護難度較大,后端復雜性常被低估。
這一級別是將代理轉化為實際產品的關鍵,不僅是構建功能,而是打造完整系統。
從失敗到成功:代理設計的關鍵經驗教訓
構建AI代理的核心在于夯實基礎,而非追逐潮流或堆砌功能。從基本工具使用到完全異步的代理系統,每一級別需建立在穩固的架構之上,方能增強能力。
失敗往往源于忽視基礎原則:清晰的模塊邊界、扎實的推理、有效的記憶管理,以及適時引入人工干預。
通過從簡單開始,逐步有針對性地增加復雜性,僅在解決實際問題時引入新功能,開發者能夠構建出不僅有趣且真正可靠的代理系統。