壹露轩杨 發表於 2025-10-11 19:45:00

Agno - 轻量级Python多智能体系统框架

<h2 id="项目概述">项目概述</h2>
<p>Agno是一个轻量级Python框架,专为构建多智能体系统(MAS)而设计。它支持开发具有不同能力级别的智能体:</p>
<ul>
<li>基础工具代理</li>
<li>知识增强代理</li>
<li>记忆与推理代理</li>
<li>团队协作代理</li>
<li>确定性工作流代理</li>
</ul>
<p>框架提供完整的开发生态,包括知识管理、工具集成、向量数据库支持和可视化Playground。</p>
<h2 id="核心特性">核心特性</h2>
<ul>
<li><strong>多级智能体架构</strong>:支持从简单工具调用到复杂团队协作的5个开发级别</li>
<li><strong>知识管理</strong>:内置20+知识源连接器(网页/PDF/CSV/YouTube等)</li>
<li><strong>混合搜索</strong>:结合向量相似性和关键词搜索的混合检索</li>
<li><strong>多模态支持</strong>:处理文本、图像、音频等多种数据类型</li>
<li><strong>推理引擎</strong>:实验性分步推理和验证机制</li>
<li><strong>向量数据库集成</strong>:支持PgVector、LanceDB、Qdrant等主流向量库</li>
<li><strong>工具生态</strong>:预置DuckDuckGo搜索、YFinance等常用工具</li>
<li><strong>开发工具</strong>:内置Playground和CLI测试环境</li>
</ul>
<h2 id="安装指南">安装指南</h2>
<h3 id="基础安装">基础安装</h3>
<pre class="highlighter-hljs"><code class="language-bash highlighter-hljs hljs"><span class="hljs-comment"># 创建虚拟环境
python3 -m venv .venv
<span class="hljs-built_in">source .venv/bin/activate

<span class="hljs-comment"># 安装核心依赖
pip install agno openai duckduckgo-search
</span></span></span></code></pre>
<h3 id="可选组件">可选组件</h3>
<pre class="highlighter-hljs"><code class="language-bash highlighter-hljs hljs"><span class="hljs-comment"># 向量数据库支持
pip install pgvector lancedb qdrant-client

<span class="hljs-comment"># 多模态扩展
pip install elevenlabs opencv-python
</span></span></code></pre>
<h3 id="开发环境配置">开发环境配置</h3>
<pre class="highlighter-hljs"><code class="language-bash highlighter-hljs hljs"><span class="hljs-comment"># 安装开发依赖
pip install -U agno

<span class="hljs-comment"># 运行Playground
python playground.py
</span></span></code></pre>
<h2 id="使用示例">使用示例</h2>
<h3 id="基础代理">基础代理</h3>
<pre class="highlighter-hljs"><code class="language-python highlighter-hljs hljs"><span class="hljs-keyword">from agno.agent <span class="hljs-keyword">import Agent
<span class="hljs-keyword">from agno.models.openai <span class="hljs-keyword">import OpenAIChat

agent = Agent(
    model=OpenAIChat(<span class="hljs-built_in">id=<span class="hljs-string">"gpt-4"),
    instructions=<span class="hljs-string">"你是一个热情的新闻记者"
)
agent.print_response(<span class="hljs-string">"分享一则纽约新闻")
</span></span></span></span></span></span></span></span></code></pre>
<h3 id="知识增强代理">知识增强代理</h3>
<pre class="highlighter-hljs"><code class="language-python highlighter-hljs hljs"><span class="hljs-keyword">from agno.agent <span class="hljs-keyword">import Agent
<span class="hljs-keyword">from agno.knowledge.pdf <span class="hljs-keyword">import PDFKnowledgeBase

knowledge = PDFKnowledgeBase(path=<span class="hljs-string">"data/docs")
agent = Agent(knowledge=knowledge)
agent.print_response(<span class="hljs-string">"文档中提到哪些关键技术?")
</span></span></span></span></span></span></code></pre>
<h3 id="工具集成代理">工具集成代理</h3>
<pre class="highlighter-hljs"><code class="language-python highlighter-hljs hljs"><span class="hljs-keyword">from agno.agent <span class="hljs-keyword">import Agent
<span class="hljs-keyword">from agno.tools.yfinance <span class="hljs-keyword">import YFinanceTools

agent = Agent(tools=)
agent.print_response(<span class="hljs-string">"苹果公司当前股价是多少?")
</span></span></span></span></span></code></pre>
<h2 id="核心架构">核心架构</h2>
<h3 id="智能体初始化">智能体初始化</h3>
<pre class="highlighter-hljs"><code class="language-python highlighter-hljs hljs"><span class="hljs-keyword">class <span class="hljs-title class_">Agent:
    <span class="hljs-keyword">def <span class="hljs-title function_">__init__(<span class="hljs-params">
      self,
      model: BaseModel,          <span class="hljs-comment"># 语言模型
      tools: <span class="hljs-type">List = [], <span class="hljs-comment"># 工具集
      knowledge: BaseKnowledge = <span class="hljs-literal">None,<span class="hljs-comment"># 知识库
      storage: BaseStorage = <span class="hljs-literal">None,      <span class="hljs-comment"># 会话存储
      reasoning: <span class="hljs-built_in">bool = <span class="hljs-literal">False    <span class="hljs-comment"># 启用推理
    ):
      self.components = {
            <span class="hljs-string">'model': model,
            <span class="hljs-string">'tools': ToolManager(tools),
            <span class="hljs-string">'knowledge': knowledge,
            <span class="hljs-string">'storage': storage
      }
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
<h3 id="知识检索流程">知识检索流程</h3>
<pre class="highlighter-hljs"><code class="language-python highlighter-hljs hljs"><span class="hljs-keyword">def <span class="hljs-title function_">search_knowledge(<span class="hljs-params">query):
    <span class="hljs-comment"># 混合检索流程
    vector_results = vector_db.semantic_search(query)
    keyword_results = fulltext_search(query)
   
    <span class="hljs-comment"># 结果重排序
    combined = hybrid_reranker(vector_results, keyword_results)
   
    <span class="hljs-comment"># 上下文注入
    <span class="hljs-keyword">return format_for_prompt(combined[:<span class="hljs-number">5])
</span></span></span></span></span></span></span></span></code></pre>
<h3 id="工具调用机制">工具调用机制</h3>
<pre class="highlighter-hljs"><code class="language-python highlighter-hljs hljs"><span class="hljs-keyword">async <span class="hljs-keyword">def <span class="hljs-title function_">execute_tool(<span class="hljs-params">tool_name, args):
    tool = self.tools.get(tool_name)
   
    <span class="hljs-comment"># 异步执行
    result = <span class="hljs-keyword">await tool.execute(args)
   
    <span class="hljs-comment"># 结果验证
    <span class="hljs-keyword">if <span class="hljs-keyword">not validate_result(result):
      <span class="hljs-keyword">raise ToolExecutionError
   
    <span class="hljs-keyword">return format_tool_output(result)
</span></span></span></span></span></span></span></span></span></span></span></code></pre>
<div class="cnb-code-toolbar"><span class="cnb-code-toolbar-item">PYTHON<span class="cnb-code-toolbar-item"> 复制<span class="cnb-code-toolbar-item"> 全屏</span></span></span></div>
<h2 id="应用场景">应用场景</h2>
<ul>
<li><strong>智能问答系统</strong>:基于文档的知识代理</li>
<li><strong>数据分析助手</strong>:集成数据库和可视化工具</li>
<li><strong>自动化工作流</strong>:多代理协作完成任务</li>
<li><strong>实时信息代理</strong>:结合网络搜索和API工具</li>
<li><strong>个性化推荐</strong>:利用记忆和用户画像</li>
</ul>
<iframe style="display: none !important"></iframe><br><br>
来源:https://www.cnblogs.com/ExMan/p/19135868
頁: [1]
查看完整版本: Agno - 轻量级Python多智能体系统框架