告别API依赖手把手教你用Ollama本地模型跑通AutoGen第一个Agent附完整代码在AI技术快速发展的今天大型语言模型(LLM)的应用越来越广泛但依赖云端API不仅成本高昂还存在隐私和网络延迟等问题。本文将带你使用Ollama在本地部署开源模型结合微软AutoGen框架构建一个完全本地运行的对话Agent系统。1. 环境准备与工具选择在开始之前我们需要明确几个关键组件的角色Ollama一个轻量级的本地LLM运行环境支持多种开源模型AutoGen微软开发的AI Agent框架支持多Agent协作Llama 3Meta开源的强大语言模型性能接近商业模型1.1 硬件与软件要求虽然LLM通常需要强大算力但通过合理选择模型大小和量化版本普通开发者电脑也能运行配置项最低要求推荐配置操作系统Windows 10/macOS 12Windows 11/macOS 14内存8GB16GB存储10GB可用空间SSD 20GBGPU集成显卡NVIDIA 8GB显存提示对于Mac用户M系列芯片的神经网络引擎能显著提升推理速度1.2 安装基础工具链首先确保系统已安装Python 3.8和包管理工具pip。然后执行以下步骤# 创建并激活虚拟环境 python -m venv autogen_env source autogen_env/bin/activate # Linux/macOS autogen_env\Scripts\activate # Windows # 安装核心依赖 pip install autogen[agentchat] ollama2. Ollama本地模型部署2.1 模型下载与配置Ollama支持多种开源模型我们将以Llama 3为例# 拉取模型约4.7GB ollama pull llama3 # 查看已安装模型 ollama list典型输出应包含类似信息NAME ID SIZE MODIFIED llama3:latest 365c0bd3c000 4.7GB 2 weeks ago2.2 验证模型运行创建一个简单的测试脚本test_ollama.pyimport ollama response ollama.generate( modelllama3, prompt用一句话解释量子计算 ) print(response[response])运行后应能看到类似输出量子计算是利用量子比特的叠加和纠缠特性进行并行计算的新型计算范式。3. AutoGen基础配置3.1 初始化AutoGen环境创建config.py文件配置AutoGenfrom autogen import UserProxyAgent, config_list_from_json # 本地Ollama配置 config_list [ { model: llama3, base_url: http://localhost:11434/v1, api_key: ollama, # 任意字符串Ollama不需要真实key api_type: openai # 使用OpenAI兼容接口 } ] # 创建代理配置 llm_config { config_list: config_list, temperature: 0.7, timeout: 120 }3.2 构建第一个对话Agent在demo_agent.py中实现基础对话功能from autogen import AssistantAgent, UserProxyAgent from config import llm_config # 创建用户代理 user_proxy UserProxyAgent( nameUser, human_input_modeALWAYS, max_consecutive_auto_reply3 ) # 创建AI助手 assistant AssistantAgent( nameAI_Assistant, llm_configllm_config, system_message你是一个有帮助的AI助手 ) # 启动对话 user_proxy.initiate_chat( assistant, message帮我制定一个三天的北京旅游计划 )4. 实战构建旅游规划Agent系统4.1 多Agent协作架构我们将创建一个更复杂的系统包含三个角色旅游专家负责生成详细行程预算顾问负责成本估算协调员整合各方意见from autogen import GroupChat, GroupChatManager # 创建专家Agent travel_expert AssistantAgent( nameTravel_Expert, llm_configllm_config, system_message你是旅游专家擅长设计详细行程 ) # 创建预算Agent budget_advisor AssistantAgent( nameBudget_Advisor, llm_configllm_config, system_message你专注分析旅游成本能给出精确预算 ) # 设置群聊 groupchat GroupChat( agents[user_proxy, travel_expert, budget_advisor], messages[], max_round10 ) manager GroupChatManager(groupchatgroupchat, llm_configllm_config) # 启动复杂对话 user_proxy.initiate_chat( manager, message我们一家四口两个孩子计划在北京玩三天预算1万元以内 )4.2 输出优化与格式控制为了让输出更结构化我们可以修改Agent的system_messagetravel_expert.system_message 你是一个专业的旅游规划师请按照以下格式回复 ### 每日行程 - 上午[活动1](时间) - 下午[活动2](时间) - 晚上[活动3](时间) ### 注意事项 1. 交通方式 2. 餐饮建议 3. 特别提示 保持回答简洁专业使用Markdown格式5. 性能优化与问题排查5.1 常见错误解决方案错误类型表现解决方法连接超时无法访问localhost:11434确保Ollama服务已启动模型未找到model not found错误检查ollama list确认模型名内存不足进程被终止使用更小的模型或增加swap空间5.2 高级配置技巧在config.py中添加这些参数可以提升性能llm_config.update({ request_timeout: 300, seed: 42, # 固定随机种子使结果可复现 max_tokens: 1024, top_p: 0.9 })对于复杂任务可以启用函数调用功能assistant AssistantAgent( nameAI_Assistant, llm_config{ **llm_config, functions: [ { name: get_weather, description: 获取指定城市的天气信息, parameters: { type: object, properties: { location: {type: string} }, required: [location] } } ] } )6. 扩展应用场景本地AutoGen系统不仅限于对话还可以应用于个人知识管理构建本地知识库问答系统代码辅助实现本地运行的编程助手自动化办公处理邮件、文档摘要等任务以下是一个文档处理Agent的示例from autogen import AssistantAgent doc_agent AssistantAgent( nameDoc_Processor, llm_configllm_config, system_message你是一个专业的文档处理助手能够 1. 总结文档要点 2. 提取关键数据 3. 生成执行摘要 请始终使用以下格式 ### 文档摘要 [内容概览] ### 关键点 1. [要点1] 2. [要点2] ### 建议行动 - [行动项1] )在实际项目中我发现将Ollama与AutoGen结合使用时模型响应速度会随着对话轮次增加而变慢。这通常是由于对话历史积累导致的可以通过设置max_consecutive_auto_reply参数限制自动回复次数或在长时间对话后重置Agent状态来解决。
告别API依赖:手把手教你用Ollama本地模型跑通AutoGen第一个Agent(附完整代码)
告别API依赖手把手教你用Ollama本地模型跑通AutoGen第一个Agent附完整代码在AI技术快速发展的今天大型语言模型(LLM)的应用越来越广泛但依赖云端API不仅成本高昂还存在隐私和网络延迟等问题。本文将带你使用Ollama在本地部署开源模型结合微软AutoGen框架构建一个完全本地运行的对话Agent系统。1. 环境准备与工具选择在开始之前我们需要明确几个关键组件的角色Ollama一个轻量级的本地LLM运行环境支持多种开源模型AutoGen微软开发的AI Agent框架支持多Agent协作Llama 3Meta开源的强大语言模型性能接近商业模型1.1 硬件与软件要求虽然LLM通常需要强大算力但通过合理选择模型大小和量化版本普通开发者电脑也能运行配置项最低要求推荐配置操作系统Windows 10/macOS 12Windows 11/macOS 14内存8GB16GB存储10GB可用空间SSD 20GBGPU集成显卡NVIDIA 8GB显存提示对于Mac用户M系列芯片的神经网络引擎能显著提升推理速度1.2 安装基础工具链首先确保系统已安装Python 3.8和包管理工具pip。然后执行以下步骤# 创建并激活虚拟环境 python -m venv autogen_env source autogen_env/bin/activate # Linux/macOS autogen_env\Scripts\activate # Windows # 安装核心依赖 pip install autogen[agentchat] ollama2. Ollama本地模型部署2.1 模型下载与配置Ollama支持多种开源模型我们将以Llama 3为例# 拉取模型约4.7GB ollama pull llama3 # 查看已安装模型 ollama list典型输出应包含类似信息NAME ID SIZE MODIFIED llama3:latest 365c0bd3c000 4.7GB 2 weeks ago2.2 验证模型运行创建一个简单的测试脚本test_ollama.pyimport ollama response ollama.generate( modelllama3, prompt用一句话解释量子计算 ) print(response[response])运行后应能看到类似输出量子计算是利用量子比特的叠加和纠缠特性进行并行计算的新型计算范式。3. AutoGen基础配置3.1 初始化AutoGen环境创建config.py文件配置AutoGenfrom autogen import UserProxyAgent, config_list_from_json # 本地Ollama配置 config_list [ { model: llama3, base_url: http://localhost:11434/v1, api_key: ollama, # 任意字符串Ollama不需要真实key api_type: openai # 使用OpenAI兼容接口 } ] # 创建代理配置 llm_config { config_list: config_list, temperature: 0.7, timeout: 120 }3.2 构建第一个对话Agent在demo_agent.py中实现基础对话功能from autogen import AssistantAgent, UserProxyAgent from config import llm_config # 创建用户代理 user_proxy UserProxyAgent( nameUser, human_input_modeALWAYS, max_consecutive_auto_reply3 ) # 创建AI助手 assistant AssistantAgent( nameAI_Assistant, llm_configllm_config, system_message你是一个有帮助的AI助手 ) # 启动对话 user_proxy.initiate_chat( assistant, message帮我制定一个三天的北京旅游计划 )4. 实战构建旅游规划Agent系统4.1 多Agent协作架构我们将创建一个更复杂的系统包含三个角色旅游专家负责生成详细行程预算顾问负责成本估算协调员整合各方意见from autogen import GroupChat, GroupChatManager # 创建专家Agent travel_expert AssistantAgent( nameTravel_Expert, llm_configllm_config, system_message你是旅游专家擅长设计详细行程 ) # 创建预算Agent budget_advisor AssistantAgent( nameBudget_Advisor, llm_configllm_config, system_message你专注分析旅游成本能给出精确预算 ) # 设置群聊 groupchat GroupChat( agents[user_proxy, travel_expert, budget_advisor], messages[], max_round10 ) manager GroupChatManager(groupchatgroupchat, llm_configllm_config) # 启动复杂对话 user_proxy.initiate_chat( manager, message我们一家四口两个孩子计划在北京玩三天预算1万元以内 )4.2 输出优化与格式控制为了让输出更结构化我们可以修改Agent的system_messagetravel_expert.system_message 你是一个专业的旅游规划师请按照以下格式回复 ### 每日行程 - 上午[活动1](时间) - 下午[活动2](时间) - 晚上[活动3](时间) ### 注意事项 1. 交通方式 2. 餐饮建议 3. 特别提示 保持回答简洁专业使用Markdown格式5. 性能优化与问题排查5.1 常见错误解决方案错误类型表现解决方法连接超时无法访问localhost:11434确保Ollama服务已启动模型未找到model not found错误检查ollama list确认模型名内存不足进程被终止使用更小的模型或增加swap空间5.2 高级配置技巧在config.py中添加这些参数可以提升性能llm_config.update({ request_timeout: 300, seed: 42, # 固定随机种子使结果可复现 max_tokens: 1024, top_p: 0.9 })对于复杂任务可以启用函数调用功能assistant AssistantAgent( nameAI_Assistant, llm_config{ **llm_config, functions: [ { name: get_weather, description: 获取指定城市的天气信息, parameters: { type: object, properties: { location: {type: string} }, required: [location] } } ] } )6. 扩展应用场景本地AutoGen系统不仅限于对话还可以应用于个人知识管理构建本地知识库问答系统代码辅助实现本地运行的编程助手自动化办公处理邮件、文档摘要等任务以下是一个文档处理Agent的示例from autogen import AssistantAgent doc_agent AssistantAgent( nameDoc_Processor, llm_configllm_config, system_message你是一个专业的文档处理助手能够 1. 总结文档要点 2. 提取关键数据 3. 生成执行摘要 请始终使用以下格式 ### 文档摘要 [内容概览] ### 关键点 1. [要点1] 2. [要点2] ### 建议行动 - [行动项1] )在实际项目中我发现将Ollama与AutoGen结合使用时模型响应速度会随着对话轮次增加而变慢。这通常是由于对话历史积累导致的可以通过设置max_consecutive_auto_reply参数限制自动回复次数或在长时间对话后重置Agent状态来解决。