ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

在 Agno 中使用 Ollama 本地模型实现 Agent 推理:从 QwQ 到 DeepSeek-R1 的完整指南

在 Agno 中使用 Ollama 本地模型实现 Agent 推理:从 QwQ 到 DeepSeek-R1 的完整指南 在 Agno 中使用 Ollama 本地模型实现 Agent 推理从 QwQ 到 DeepSeek-R1 的完整指南【免费下载链接】agnoBuild, run, and manage agent platforms.项目地址: https://gitcode.com/GitHub_Trending/ag/agno本篇技术指南围绕 Agno 推理Reasoning体系中 Ollama 本地模型的落地实践展开聚焦 cookbook/10_reasoning/models/ollama 目录下local_reasoning.py与reasoning_model_deepseek.py两个示例讲解如何让 Agent 完全在本地、离线环境中完成“思考—推理—作答”的完整闭环。读完本文你将掌握在 Agno 中接入 Ollama 推理模型的两种典型用法直接使用具备推理能力的模型如 QwQ、DeepSeek-R1以及为普通模型挂载独立的reasoning_model进行链式思考并了解其底层调用链与关键参数。为什么在 Agno 中选 Ollama 做推理Agno 的推理能力可以概括为三种实现路径推理模型Reasoning Models、推理工具Reasoning Tools以及推理 Agent / Team。其中“推理模型”即使用经过预训练、天然具备思考能力的模型来完成对问题的分析与求解详见 cookbook/10_reasoning/README.md。而 Ollama 正是把这类推理模型以本地服务形式运行的最佳载体之一完全本地、隐私可控所有推理发生在本机对话内容不出设备示例脚本中多次强调 Running locally with complete privacy免费推理模型可通过ollama pull拉取 QwQ、DeepSeek-R1 等开源推理模型无需支付 API 费用与 Agno 深度集成Ollama模型类是 Agno 内置的模型适配器直接参与 Agent 的推理、工具调用、流式输出全流程。需要说明的是本地推理的效果与硬件强相关QwQ 32B、DeepSeek-R1 14B 等大参数模型对显存要求较高小参数模型如deepseek-r1:8b则更快更轻量适合开发调试。环境准备安装 Ollama 与模型启动 Ollama 服务确保本机已安装并运行 Ollama默认监听localhost:11434。Agno 的Ollama适配器通过 Python 官方的ollama客户端与之通信因此还需安装依赖pip install ollama若缺少该依赖Ollama 模型适配器源码 会直接抛出ImportError提示安装。拉取推理模型按需执行以下命令与示例脚本中的模型 ID 一一对应ollama pull qwq:32b # Alibaba QwQ 32B推理能力强 ollama pull deepseek-r1:8b # DeepSeek-R1 8B更小更快 ollama pull deepseek-r1:14b # DeepSeek-R1 14B供独立推理模型场景使用 ollama pull llama3.2:latest # 主模型示例reasoning_model_deepseek.py 使用其中qwq:32b与deepseek-r1:8b是 local_reasoning.py 中直接使用的两个推理模型deepseek-r1:14b则作为 reasoning_model_deepseek.py 的独立推理模型。方式一直接用推理模型作答local_reasoning.pylocal_reasoning.py 演示了最直接的本地推理用法让 Agent 直接挂载一个推理模型用户无需配置任何推理流程模型自身的思维链能力即可生效。完整代码from agno.agent import Agent from agno.models.ollama import Ollama from rich.console import Console def run_example() - None: console Console() # 测试任务要求模型展示逐步推理过程 task What is 23 × 47? Show your step-by-step reasoning. console.rule([bold cyan]Local Reasoning with Ollama[/bold cyan]) # 场景一QwQ 32B阿里巴巴推理模型 console.print(\n[bold blue]QwQ:32B (Alibaba Reasoning Model)[/bold blue]) console.print([dim]Running locally with complete privacy...[/dim]\n) try: agent_qwq Agent( modelOllama(idqwq:32b), markdownTrue, ) agent_qwq.print_response(task, streamTrue, show_full_reasoningTrue) except Exception as e: console.print(f[red]Error: {e}[/red]) console.print([yellow]Make sure Ollama is running and qwq:32b is installed:[/yellow]) console.print( ollama pull qwq:32b) # 场景二DeepSeek-R1 8B更小、更快 console.print(\n[bold green]DeepSeek-R1:8B (Smaller, Faster)[/bold green]) console.print([dim]Running locally with complete privacy...[/dim]\n) try: agent_deepseek Agent( modelOllama(iddeepseek-r1:8b), markdownTrue, ) agent_deepseek.print_response(task, streamTrue, show_full_reasoningTrue) except Exception as e: console.print(f[red]Error: {e}[/red]) console.print([yellow]Make sure Ollama is running and deepseek-r1:8b is installed:[/yellow]) console.print( ollama pull deepseek-r1:8b) if __name__ __main__: run_example()关键点拆解Ollama(idqwq:32b)指定本地模型 ID。Ollama模型类的默认id为llama3.1见 chat.py 源码此处显式传入推理模型 ID 覆盖默认值markdownTrue让 Agent 以 Markdown 格式渲染输出便于阅读分步推理结果streamTrue开启流式输出逐步展示生成内容配合show_full_reasoningTrue可以在控制台同时看到完整思维链与最终答案show_full_reasoningTrueprint_response的展示开关定义于 agent.py用于控制是否完整打印推理过程异常兜底示例用try/except捕获错误并提示先运行ollama pull确保服务未启动或模型缺失时给出可执行的修复指引。底层如何提取“思维链”当模型输出中包含think.../think标签时Agno 会自动完成推理内容与正文的分离Ollama._parse_provider_response在解析响应时检测think标签调用extract_thinking_content将标签内内容存入reasoning_content同时把清理后的正文放入content见 chat.py 与 reasoning.py 工具函数。这意味着无论模型以何种格式输出推理过程Agno 都能在用户侧以统一的reasoning_content呈现这正是show_full_reasoningTrue得以工作的基础。方式二为普通模型挂载独立推理模型reasoning_model_deepseek.pyAgno 的一个强大特性是主模型与推理模型分离主模型负责生成最终回复而reasoning_model负责先进行链式思考、验证结果再交由主模型输出。cookbook/10_reasoning/README.md 明确说明当 Agent 配置了reasoning_model时推理模型先用思维链求解任务期间可调用工具收集信息、迭代验证最终结果交回主模型校验并作答。完整代码from agno.agent import Agent from agno.models.ollama.chat import Ollama def run_example() - None: agent Agent( modelOllama(idllama3.2:latest), reasoning_modelOllama(iddeepseek-r1:14b, options{num_predict: 4096}), ) agent.print_response( Solve the trolley problem. Evaluate multiple ethical frameworks. Include an ASCII diagram of your solution., streamTrue, ) if __name__ __main__: run_example()关键点拆解modelOllama(idllama3.2:latest)主模型负责组织最终答案。这里特意使用不具备强推理能力的通用模型以突出“推理交给专用模型”的分工reasoning_modelOllama(iddeepseek-r1:14b, ...)独立推理模型。注意此处 import 路径为agno.models.ollama.chat与方式一的agno.models.ollama等价均指向同一个Ollama适配器类options{num_predict: 4096}通过 Ollama 的options请求参数控制采样行为num_predict限制最大生成 token 数。由于思维链推理输出较长显式放宽到 4096 可以避免推理被截断。该参数会经get_request_params原样透传给 Ollama 的/api/chat接口见 chat.pystreamTrue流式输出推理与回答过程。值得留意的细节reasoning_model会被标记为推理模型在 Agent 初始化阶段Agno 会调用get_model解析reasoning_model并将其model_type设置为ModelType.REASONING_MODEL见 agent/_init.py从而在内部将其与主模型区分对待序列化支持reasoning_model会随 Agent 配置一起被序列化到 storage 的 session 配置中并在恢复时通过resolve_model重建见 agent/_storage.py说明该配置可持久化、可复用适用的场景当主模型能力较弱而你需要更强的逻辑推理时不必更换主模型只需为其“外挂”一个更强的推理模型即可在本地低成本获得接近大型推理模型的效果。Ollama 适配器的核心参数与调用链为了让两种用法都能顺利落地这里补充Ollama模型适配器的核心配置项均定义于 chat.py参数类型默认值说明idstrllama3.1Ollama 中的模型 ID如qwq:32b、deepseek-r1:8bname/providerstrOllama模型名称与提供商标识用于遥测与日志formatAnyNone结构化输出格式传入 Pydantic 模型时自动转为 JSON Schema见_prepare_request_kwargs_for_invokeoptionsAnyNoneOllama 采样参数如num_predict、temperature等keep_alivefloat/strNone模型在内存中的驻留时长控制加载/卸载行为hoststrNoneOllama 服务地址默认走客户端默认值localhost:11434timeoutAnyNone客户端请求超时api_keystr环境变量OLLAMA_API_KEY使用 Ollama Cloud 时所需配置后host自动切换为https://ollama.comrequest_paramsDictNone透传给/api/chat的额外请求参数请求链路Agent.print_response→Ollama.invoke_stream流式/Ollama.invoke非流式→get_client().chat(model..., messages[...], streamTrue, **request_params)→ 逐 chunk 解析_parse_provider_response_delta或整体解析_parse_provider_response。其中工具调用tool_calls、图片输入images也由_format_message统一处理说明本地推理 Agent 同样可以组合工具与多模态输入。指标采集_get_metrics会从响应中解析prompt_eval_count输入 token、eval_count输出 token以及total_duration、load_duration、prompt_eval_duration、eval_duration等耗时数据见 chat.py可用于评估本地推理的性能开销。运行与验证在仓库根目录下执行以下命令即可复现两个示例# 方式一直接用推理模型QwQ 32B 与 DeepSeek-R1 8B 各跑一遍 python cookbook/10_reasoning/models/ollama/local_reasoning.py # 方式二主模型 独立推理模型llama3.2 deepseek-r1:14b python cookbook/10_reasoning/models/ollama/reasoning_model_deepseek.py运行前提Ollama 服务已在本地启动对应模型已通过ollama pull下载完成已安装agno与ollamaPython 包。该目录的示例均已通过 Agno cookbook 的结构校验与 Python 编译检查见 TEST_LOG.md可直接运行验证。对于local_reasoning.py的 “23 × 47” 乘法任务推理模型会分步拆解竖式计算过程对于reasoning_model_deepseek.py的“电车难题”任务DeepSeek-R1 会先进行多伦理框架的思辨再由主模型组织成含 ASCII 图的最终答复——这正是本地推理的典型工作流。小结通过本文的两个示例你可以在完全离线的环境下让 Agno Agent 具备可观测、可流式输出的链式推理能力直接用Ollama(idqwq:32b)或Ollama(iddeepseek-r1:8b)即可获得开箱即用的本地推理通过reasoning_model参数为任意主模型“外挂”更强推理模型如deepseek-r1:14b实现主模型与推理模型分离的分工架构借助options、stream、show_full_reasoning等参数精细控制推理过程与输出形态。这套组合让“数据不出本机”的强推理 Agent 成为可能适合隐私敏感、成本敏感或离线环境下的 Agent 应用开发。进一步探索可参考 cookbook/10_reasoning 目录下的 agents、tools 与 models 分支示例。【免费下载链接】agnoBuild, run, and manage agent platforms.项目地址: https://gitcode.com/GitHub_Trending/ag/agno创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表