程序员如何自己开发一个Agent?保姆级实操指南(从极简版到工业级)
作为程序员,开发Agent不用从零开始造轮子。核心就三件事:搭骨架、填大脑、连手脚。骨架是任务调度逻辑,大脑是大模型,手脚是调用外部工具的能力。
下面分三个版本来讲,从新手能跑的极简版,到能落地的进阶版,再到工业级的大佬版。全是干货,照着做就行。
01 核心原理:Agent的三大模块
不管什么Agent,都离不开这三样,缺一个就玩不转:
规划模块:把用户模糊的需求拆成具体步骤。比如"写一篇AI绘画教程"拆成"选题→查资料→写大纲→填内容→排版"。大模型的思维链(CoT)就能搞定这个。
执行模块:调用外部工具干活。比如用Python爬资料、调Stable Diffusion api生成配图、用Markdown渲染排版。核心是工具函数的封装和参数传递。
反馈模块:检查执行结果对不对,不行就返工。比如发现教程里的参数写错了,让模型重新查资料修正。可以用大模型自检,也能加人工规则。
02 版本1:新手友好的极简版Agent(半天就能跑)
目标是做一个能"自动写Python小脚本"的Agent,不用复杂框架,纯原生代码加开源大模型。
技术栈:Python + Ollama(本地跑大模型,不用API key) + 简单函数封装
步骤1:环境准备
装Ollama:官网下载,一行命令跑起Llama 3。
装依赖:
pip install requests ollama步骤2:写核心代码(不到50行)
import ollama
# 1. 规划函数:让大模型拆任务
def plan_task(user_need):
prompt = f"""你是一个Python助手,帮我把需求拆成具体的代码编写步骤。
需求:{user_need}
要求:步骤要清晰,每步只做一件事,比如"1. 导入需要的库;2. 定义函数XXX"
"""
response = ollama.chat(model='llama3', messages=[{'role': 'user', 'content': prompt}])
return response['message']['content']
# 2. 执行函数:让大模型生成代码,本地运行
def execute_code(code):
try:
exec(code, globals())
return "代码执行成功!"
except Exception as e:
return f"代码报错:{str(e)},请修正!"
# 3. 主循环:规划→执行→反馈
def simple_agent(user_need):
print("=== 1. 任务规划 ===")
steps = plan_task(user_need)
print(steps)
print("\n=== 2. 生成并执行代码 ===")
code_prompt = f"""根据下面的步骤,生成完整的Python代码:
步骤:{steps}
要求:代码简洁,加注释,能直接运行
"""
code = ollama.chat(model='llama3', messages=[{'role': 'user', 'content': code_prompt}])['message']['content']
print("生成的代码:\n", code)
result = execute_code(code.replace("```python", "").replace("```", ""))
print("执行结果:", result)
# 测试一下!
if __name__ == "__main__":
simple_agent("写一个函数,计算1到100的和,然后打印结果")步骤3:运行测试
直接跑脚本,你会看到Agent先输出步骤,再生成代码,最后执行出结果。一个极简Agent就成了。
缺点:只能跑简单代码,没有复杂工具调用,也不会自动修正错误。
03 版本2:进阶版·能调用工具的Agent(落地级)
目标是做一个能"爬取网页+数据分析+生成报告"的多工具Agent。
核心升级:引入工具注册表、标准化函数调用、结果反馈机制。
技术栈:Python + LangChain + 大模型 + 浏览器/Excel工具
LangChain是什么? LangChain是一个开发大模型应用的框架,提供了一套模块化工具和API。它简化了从开发到生产的整个过程,支持与外部数据源、工具和服务的集成。很多大公司如LinkedIn、Uber都在用LangChain构建生产级AI应用。
第一步:封装工具函数
把常用功能写成标准化函数:
from langchain.tools import tool
@tool
def crawl_webpage(url: str) -> str:
"""爬取指定URL的网页文本内容,用于获取外部数据"""
import requests
from bs4 import BeautifulSoup
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
return soup.get_text()[:1000] # 只取前1000字
@tool
def analyze_data(data: list) -> str:
"""分析数字列表,返回平均值、最大值、最小值"""
avg = sum(data)/len(data)
max_val = max(data)
min_val = min(data)
return f"平均值:{avg},最大值:{max_val},最小值:{min_val}"第二步:用LangChain搭Agent骨架
LangChain的Agent框架通过引入工具调用链和动态决策机制,让AI系统具备自主规划与执行多步骤任务的能力。核心价值在于任务分解、工具集成和环境交互。
from langchain.agents import create_openai_tools_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langchain import hub
# 初始化大模型
llm = ChatOpenAI(model="gpt-3.5-turbo")
# 加载工具
tools = [crawl_webpage, analyze_data]
# 用LangChain Hub的现成Prompt模板
prompt = hub.pull("hwchase17/openai-tools-agent")
# 创建Agent和执行器
agent = create_openai_tools_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 测试:爬取某网站数据并分析
result = agent_executor.invoke({"input": "爬取https://example.com的房价数据,提取数字列表并分析"})
print(result["output"])第三步:加反馈修正机制
如果执行失败,让Agent自动重试:
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True,
handle_parsing_errors="重新尝试"
)关键亮点:
工具调用标准化:用@tool装饰器,大模型能自动识别函数名和参数
支持多工具组合:爬数据→分析→生成报告,一键完成
可扩展性强:想加新工具,直接封装函数就行
04 版本3:大佬版·自主进化的Agent(工业级)
如果想做更牛的Agent,需要加这些高级特性:
长期记忆模块
用向量数据库存储Agent的历史任务和经验,下次遇到类似需求不用重新规划。LangChain支持多种向量存储方案,包括内存型、Redis、Snowflake等。
LangChain的InMemoryVectorStore可以快速实现内存向量存储:
from langchain_aws.vectorstores import InMemoryVectorStore
rds = InMemoryVectorStore.from_documents(
documents=docs,
embedding=embeddings,
redis_url="redis://localhost:6379",
)多Agent协作
让多个小Agent分工,一个负责爬数据,一个负责分析,一个负责写报告,用消息队列通信。LangChain支持自定义规划器,可以实现复杂决策逻辑。
沙箱环境
执行代码或调用外部工具时,用Docker隔离,避免风险。比如防止Agent执行恶意代码。
性能优化
用大模型的函数调用API代替Prompt解析,准确率更高。加缓存机制,重复任务不用重新跑。
部署成API服务
LangServe是专门用来部署LangChain应用的工具,可以快速把Agent变成REST API。它自带交互式API文档和测试界面,非常方便。
05 避坑指南:老程序员踩过的3个坑
别自己写大模型:除非你有上亿级算力,否则直接用开源模型或API,把精力放在Agent的逻辑上。现在Ollama这种工具已经让本地跑大模型变得很简单。
工具调用别太复杂:新手先从2-3个工具开始,工具越多,大模型越容易搞混参数。工具描述要精确,比如"获取指定城市的实时天气,需提供城市名"就比"查询天气"好得多。
防住大模型幻觉:执行关键任务时,一定要加人工校验或规则校验。可以设置工具调用白名单,敏感操作加二次确认。
06 快速上手路线图(7天搞定)
Day1:理解Agent核心原理,跑通版本1的极简代码
Day2-3:学LangChain的工具调用,搭建版本2的多工具Agent。LangChain提供了完整的Agent开发工具链,从工具配置到决策流程都很清晰。
Day4-5:加向量数据库,实现长期记忆。可以用内存版先跑通,后面再换正式数据库。
Day6-7:测试优化,解决报错和幻觉问题,部署成API服务。用LangServe部署特别快,几行代码就能把Agent变成可调用的API。
本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!