LangChain快速开始安装依赖pipinstall-Ulangchain deepagents设置APIKEY从任意受支持的模型提供商获取 API key例如Google Gemini 或 OpenAI。设置 API keys例如OpenAIexportOPENAI_API_KEYyour-api-key你也可以在项目中的配置文件设置apikey或者在测试时在创建模型的时候设置。构建一个基础 Agent首先创建一个简单的 Agent它可以回答问题并调用工具。本示例中的 Agent 使用选定的语言模型、一个基础的天气函数作为工具以及一个简单的 Prompt 来指导其行为fromlangchain.agentsimportcreate_agentdefget_weather(city:str)-str:Get weather for a given city.returnfIts always sunny in{city}!agentcreate_agent(modelopenai:gpt-5.5,tools[get_weather],system_promptYou are a helpful assistant,)resultagent.invoke({messages:[{role:user,content:Whats the weather in San Francisco?}]})print(result[messages][-1].content_blocks)当你运行代码并向 Agent 提示询问旧金山San Francisco的天气时Agent 会使用该输入以及它可用的上下文信息。Agent 能够理解你是在询问城市 San Francisco 的天气因此会使用提供的城市名称调用天气工具。[!NOTE]你可以通过修改模型名称并配置对应的 API key 来使用任何受支持的模型。使用 LangSmith… 跟踪 Agent 内部正在发生的过程。请按照 tracing quickstart 完成配置。我们建议你同时配置 LangSmith Engine它可以监控你的 traces检测问题并提出修复方案。构建一个真实场景中的 Agent在下面的示例中你将构建一个研究型 Agent它可以回答有关文本文件的问题。在此过程中你将探索以下概念用于改善 Agent 行为的详细系统 Prompt创建与外部数据集成的工具用于获得一致响应的模型配置用于类似聊天交互的对话记忆Deep Agents 提供的内置功能测试你的 Agent定义系统 Prompt系统 Prompt 定义了 Agent 的角色和行为。保持其具体且可执行SYSTEM_PROMPTYou are a literary data assistant. ## Capabilities - fetch_text_from_url: loads document text from a URL into the conversation. Do not guess line counts or positions—ground them in tool results from the saved file.创建工具工具Tools允许模型通过调用你定义的函数与外部系统进行交互。工具可以依赖运行时上下文并且也可以与 Agent 的 memory 进行交互。本示例使用一个工具用于从指定的 URL 加载文档importurllib.errorimporturllib.requestfromlangchain.toolsimporttooltooldeffetch_text_from_url(url:str)-str:Fetch the document from a URL. requrllib.request.Request(url,headers{User-Agent:Mozilla/5.0 (compatible; quickstart-research/1.0)},)try:withurllib.request.urlopen(req,timeout120)asresp:rawresp.read()excepturllib.error.URLErrorase:returnfFetch failed:{e}textraw.decode(utf-8,errorsreplace)returntext[!TIP]工具应该有完善的文档说明它们的名称、描述以及参数名称都会成为模型 Prompt 的一部分。LangChain 的tool⁠会添加元数据并通过ToolRuntime参数支持运行时注入。更多信息请参阅 tools guide⁠.配置你的模型根据你的使用场景使用合适的参数配置你的语言模型。例如fromlangchain.chat_modelsimportinit_chat_model modelinit_chat_model(openai:gpt-5.5,temperature0.5,timeout300,max_tokens25000,)根据选择的模型和提供商不同初始化参数可能会有所变化请参考它们的参考文档页面以获取详细信息。添加 memory为你的 Agent 添加 memory以便在交互过程中保持状态。这使 Agent 能够记住之前的对话内容和上下文。fromlanggraph.checkpoint.memoryimportInMemorySaver checkpointerInMemorySaver()[!CAUTION]在生产环境中使用持久化 checkpointer将消息历史保存到数据库中。更多详细信息请参阅 Add and manage memory⁠创建并运行 Agent现在将所有组件组装起来创建你的 Agent 并运行它。创建 Agent 有两种不同的框架LangChain agents 和 deep agents。LangChain 和 deep agents 都可以让你对工具、memory 以及更多功能进行精细化控制。两者的主要区别在于deep agents 已经内置了一系列常用能力例如规划planning、文件系统工具file system tools以及子 Agentsubagents。当你希望以最少的配置获得最大能力时使用 deep agents当你需要精细化控制时选择 LangChain agents。[!WARNING]由于该代码使用《了不起的盖茨比》The Great Gatsby的完整文本调用模型因此会消耗大量 tokens。你可以在下一步查看示例输出。importurllib.errorimporturllib.requestfromlangchain.agentsimportcreate_agentfromdeepagentsimportcreate_deep_agentfromlangchain.chat_modelsimportinit_chat_modelfromlangchain.toolsimporttoolfromlanggraph.checkpoint.memoryimportInMemorySaver SYSTEM_PROMPTYou are a literary data assistant. ## Capabilities - fetch_text_from_url: loads document text from a URL into the conversation. Do not guess line counts or positions—ground them in tool results from the saved file.tooldeffetch_text_from_url(url:str)-str:Fetch the document from a URL. requrllib.request.Request(url,headers{User-Agent:Mozilla/5.0 (compatible; quickstart-research/1.0)},)try:withurllib.request.urlopen(req,timeout120)asresp:rawresp.read()excepturllib.error.URLErrorase:returnfFetch failed:{e}textraw.decode(utf-8,errorsreplace)returntext modelinit_chat_model(gemini-3.1-pro-preview,model_providergoogle-genai,temperature0.5,timeout600,max_tokens25000,streamingTrue,)checkpointerInMemorySaver()agentcreate_agent(modelmodel,tools[fetch_text_from_url],system_promptSYSTEM_PROMPT,checkpointercheckpointer,)deep_agentcreate_deep_agent(modelmodel,tools[fetch_text_from_url],system_promptSYSTEM_PROMPT,checkpointercheckpointer,)contentfProject Gutenberg hosts a full plain-text copy of F. Scott Fitzgeralds The Great Gatsby. URL: https://www.gutenberg.org/files/64317/64317-0.txt Answer as much as you can: 1) How many lines in the complete Gutenberg file contain the substring Gatsby (count lines, not occurrences within a line, each line ends with a line break). 2) The 1-based line number of the first line in the file that contains Daisy. 3) A two-sentence neutral synopsis. Do your best on (1) and (2). If at any point you realize you cannot **verify** an exact answer with your available tools and reasoning, do not fabricate numbers: use null for that field and spell out the limitation in how_you_computed_counts. If you encounter any errors please report what the error was and what the error message was.agent_resultagent.invoke({messages:[{role:user,content:content}]},config{configurable:{thread_id:great-gatsby-lc}},)deep_agent_resultdeep_agent.invoke({messages:[{role:user,content:content}]},config{configurable:{thread_id:great-gatsby-da}},)print(agent_result[messages][-1].content_blocks)print(\n)print(deep_agent_result[messages][-1].content_blocks)查看结果结果会根据所使用的模型和执行过程而有所不同。LangChain结果DeepAgent结果如果你查看两个选项卡中的输出会发现 LangChain agent 提供了答案但这些答案只是估算结果。该 Agent 缺少回答此问题所需的工具。你也可能会遇到 Prompt 过长的错误。而 deep agent 则可以使用内置的write_todos工具规划处理方式将研究任务拆分为多个步骤。调用fetch_text_from_url工具加载文件以获取信息。使用文件系统工具grep和read_file管理上下文。根据需要创建子 Agent将复杂的子任务委托给专门的子 Agent。对于 LangChain agents你必须实现更多能力才能获得类似水平的服务同时你可以根据需要在实现过程中进行自定义。跟踪 Agent 调用你使用 LangChain 构建的大多数有趣应用都会多次调用 LLM。随着这些应用变得越来越复杂能够检查 Agent 内部到底发生了什么变得非常重要。实现这一点的最佳方式是使用 LangSmith。注册一个 LangSmith 账户并设置以下内容以开始记录 tracesexportLANGSMITH_TRACINGtrueexportLANGSMITH_API_KEY...设置完成后再次运行你的脚本然后在 LangSmith 中查看你的 Agent 调用过程中发生了什么。[!TIP]要了解更多关于如何使用 LangSmith 跟踪你的 Agent 的信息请参阅 LangSmith 文档。我们建议你同时配置 LangSmith Engine它可以监控你的 traces检测问题并提出修复方案。下一步现在你已经拥有了能够执行以下操作的 Agent理解上下文并记住对话内容智能地使用工具以一致的格式提供结构化响应通过上下文处理用户特定信息在交互过程中维护对话状态进行规划、研究和综合分析仅 deep agents 支持继续学习LangChain agents添加和管理 memory部署到生产环境Deep Agents自定义选项持久化 memory部署到生产环境相关链接LangChain Agent学习