尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

从招聘要求看AI Agent开发:LLM集成与工程落地实战

从招聘要求看AI Agent开发:LLM集成与工程落地实战 # 从招聘要求看AI Agent开发LLM集成与工程落地实战## 一、背景与挑战当Agent开发成为硬性门槛最近我注意到一则来自MUFG三菱日联金融集团的招聘信息岗位为“Software Engineer, VP”明确要求“Hands-on experience developing AI agents or agentic workflows. Experience with LLM integration and prompt engineering.” 这不仅是金融巨头的技术风向标更是整个行业对AI Agent工程化能力需求的缩影。过去一年AI Agent从概念验证走向生产部署但开发者面临的核心挑战从未改变**如何将LLM大语言模型的“对话能力”转化为可编排、可复用、可观测的Agent工作流** 具体包括- **LLM集成**选择合适的模型、API、参数处理延迟和成本。- **Prompt Engineering**设计稳定的指令模板避免幻觉和逻辑跳跃。- **工具调用**Agent需要调用外部API、数据库、代码解释器等。- **状态管理**多轮对话中保持上下文一致支持记忆和持久化。- **错误处理**LLM输出可能不合法需重试、降级或回退。本文将围绕这些挑战以**LangChainv0.3.1** 和**OpenAIv1.12.0** 为例展示一个可复现的AI Agent开发流程并给出性能优化与生产部署的实践建议。## 二、技术原理Agent工作流的核心架构现代AI Agent通常基于**ReActReasoning Acting** 范式或更复杂的**Plan-and-Execute**模式。以LangChain为例其Agent架构包含四个核心组件1. **LLM**作为推理引擎负责理解用户输入、生成行动计划。2. **Tool**外部能力接口如搜索引擎、计算器、数据库查询。3. **AgentExecutor**执行循环驱动LLM与Tool交互直到给出最终答案。4. **Memory**保存对话历史用于多轮上下文。一个典型的Agent工作流如下User Input → LLM (思考需要哪些工具) → 调用Tool → Tool返回结果 → LLM (基于结果推理) → ... → 最终答案其中**Prompt Engineering**决定了LLM能否正确理解工具用法和输出格式。例如我们需要在System Prompt中明确告诉LLM- 你是一个AI助手可以调用以下工具...- 每次思考后必须输出一个JSON格式的Action包含工具名和参数。- 如果得到最终答案输出Finished。## 三、实践用LangChain构建一个可复用的AI Agent### 3.1 环境准备确保Python版本≥3.10安装依赖bashpip install langchain0.3.1 openai1.12.0 python-dotenv1.0.1创建.env文件填入OpenAI API KeyOPENAI_API_KEYsk-xxxx### 3.2 定义工具我们构建两个简单但实用的工具**天气查询**模拟API和**计算器**真实执行。pythonimport osfrom dotenv import load_dotenvfrom langchain.agents import Toolfrom langchain.tools import BaseToolfrom pydantic import BaseModel, Fieldfrom typing import Type, Optionalimport reload_dotenv()# 1. 天气查询工具模拟class WeatherInput(BaseModel):city: str Field(description城市名称如北京、上海)class WeatherTool(BaseTool):name weather_querydescription 用于查询指定城市的当前天气输入城市名称即可。args_schema: Type[BaseModel] WeatherInputdef _run(self, city: str) - str:# 模拟真实API调用import randomweathers [晴, 多云, 阴, 小雨, 中雨, 大雪]temp random.randint(-5, 35)weather random.choice(weathers)return f{city}当前天气{weather}温度{temp}°Casync def _arun(self, city: str) - str:return self._run(city)# 2. 计算器工具真实执行class CalculatorInput(BaseModel):expression: str Field(description数学表达式如 12 3 * 4)class CalculatorTool(BaseTool):name calculatordescription 用于计算数学表达式例如 12 3 * 4。注意只支持四则运算和括号。args_schema: Type[BaseModel] CalculatorInputdef _run(self, expression: str) - str:# 安全计算只允许数字、运算符和括号safe_pattern r^[0-9\-*/().\s]$if not re.match(safe_pattern, expression):return 错误表达式包含非法字符try:result eval(expression, {__builtins__: {}}, {})return f计算结果{result}except Exception as e:return f计算错误{str(e)}async def _arun(self, expression: str) - str:return self._run(expression)### 3.3 构建Agent使用LangChain的create_react_agent函数v0.3中推荐方式并自定义Prompt。pythonfrom langchain_openai import ChatOpenAIfrom langchain.agents import create_react_agent, AgentExecutorfrom langchain.prompts import PromptTemplate# 初始化LLM使用gpt-4o-mini成本低性能好llm ChatOpenAI(modelgpt-4o-mini,temperature0.0,api_keyos.getenv(OPENAI_API_KEY),request_timeout30,)# 工具列表tools [WeatherTool(), CalculatorTool()]# 自定义Prompt强调输出格式prompt PromptTemplate.from_template(You are a helpful AI assistant. You have access to the following tools:{tools}Use the following format:Question: the input question you must answerThought: you should always think about what to doAction: the action to take, should be one of [{tool_names}]Action Input: the input to the actionObservation: the result of the action... (this Thought/Action/Action Input/Observation can repeat N times)Thought: I now know the final answerFinal Answer: the final answer to the original input questionBegin!Question: {input}Thought: {agent_scratchpad})# 创建Agentagent create_react_agent(llm, tools, prompt)agent_executor AgentExecutor(agentagent,toolstools,verboseTrue,handle_parsing_errorsTrue, # 自动处理LLM输出格式错误max_iterations5, # 防止无限循环early_stopping_methodgenerate, # 当达到max_iterations时让LLM生成最终答案)### 3.4 运行测试pythonif __name__ __main__:# 测试1天气查询response1 agent_executor.invoke({input: 北京今天天气怎么样})print(Answer:, response1[output])# 测试2计算response2 agent_executor.invoke({input: 计算 (123)*4 的结果})print(Answer:, response2[output])# 测试3需要多步推理response3 agent_executor.invoke({input: 上海今天天气温度是多少如果温度高于20度请计算 (温度-10)*2 的结果})print(Answer:, response3[output])运行结果示例verbose输出会显示每一步的Thought/Action Entering new AgentExecutor chain...Thought: 用户询问北京天气我需要调用weather_query工具。Action: weather_queryAction Input: 北京Observation: 北京当前天气晴温度-2°CThought: 我已经得到天气信息可以直接回答。Final Answer: 北京今天天气晴温度-2°C。 Finished chain.Answer: 北京今天天气晴温度-2°C。### 3.5 性能优化与生产部署要点#### 1. 缓存LLM调用对于相同输入如天气查询重复使用langchain的Cachepythonfrom langchain.cache import InMemoryCachefrom langchain.globals import set_llm_cacheset_llm_cache(InMemoryCache())#### 2. 异步并发使用async版本提升吞吐量尤其当Agent需要并行调用多个工具时pythonasync def run_async():tasks [agent_executor.ainvoke({input: q}) for q in queries]results await asyncio.gather(*tasks)#### 3. 错误重试与降级在AgentExecutor中设置max_retries或自定义异常处理回调。#### 4. 监控与日志使用langsmith追踪每一步的Token消耗、延迟和成功率。## 四、对比LangChain vs AutoGen vs CrewAI| 框架 | 版本 | 核心优势 | 适合场景 ||--------------|---------|-----------------------------------|-----------------------------|| LangChain | 0.3.1 | 生态完善工具丰富企业级支持 | 通用AgentRAG多工具调用 || AutoGen | 0.2.2 | 多Agent对话角色扮演代码生成 | 复杂多轮协作自动化编程 || CrewAI | 0.30.0 | 角色化团队任务分解流程管理 | 结构化工作流知识密集型任务 |从招聘要求看“Hands-on experience developing AI agents”意味着需要具备跨框架的工程能力而不仅仅是调用API。建议团队优先选择LangChainv0.3作为基础设施因其文档完善、社区活跃且支持快速集成到现有Python后端。## 五、总结与展望AI Agent开发已从“能不能做”进入“能否稳定生产”的阶段。本文通过一个完整的LangChain Agent示例展示了LLM集成、工具定义、Prompt Engineering和异常处理的全流程。关键要点- **Prompt Engineering**是Agent稳定性的基石务必明确输出格式并做校验。- **工具设计**应遵循单一职责每个工具只做一件事并给出清晰的输入输出描述。- **性能优化**需关注LLM调用延迟和Token消耗合理使用缓存、异步和降级策略。- **监控与日志**不可缺少推荐接入LangSmith或类似平台。未来随着MCPModel Context Protocol等标准化协议的出现Agent将能够更无缝地接入企业级服务。作为开发者现在就应该掌握这些工程化技能为下一波AI应用浪潮做好准备。---**参考资料**- LangChain v0.3 官方文档https://python.langchain.com/docs/versions/v0_3/- OpenAI API 文档https://platform.openai.com/docs/api-reference- ReAct 论文https://arxiv.org/abs/2210.03629
返回列表