快速入门官网https://docs.langchain.com/oss/python/langchain/quickstart本快速入门将向您展示如何在几分钟内创建一个功能完整的AI智能体。正在使用AI编程助手安装LangChain Docs MCP服务器让您的智能体访问最新的LangChain文档和示例。安装LangChain Skills以提高智能体在LangChain生态系统任务上的性能。安装依赖安装以下包以继续操作uvuv init uvaddlangchain deepagents uvsyncpippipinstalllangchain deepagentsvenvpython-mvenv .venvsource.venv/bin/activate# 在Windows上使用 .venv\Scripts\activatepipinstalllangchain deepagents设置API密钥从任何支持的模型提供商例如Google Gemini或OpenAI获取API密钥。设置API密钥例如OpenAIexportOPENAI_API_KEYyour-api-keyGoogle GeminiexportGOOGLE_API_KEYyour-api-keyClaude (Anthropic)exportANTHROPIC_API_KEYyour-api-keyOpenRouterexportOPENROUTER_API_KEYyour-api-keyFireworksexportFIREWORKS_API_KEYyour-api-keyBasetenexportBASETEN_API_KEYyour-api-keyOllama# Ollama默认不需要API密钥但需要运行本地服务AzureexportAZURE_OPENAI_API_KEYyour-api-keyexportAZURE_OPENAI_ENDPOINTyour-endpointAWS BedrockexportAWS_ACCESS_KEY_IDyour-access-keyexportAWS_SECRET_ACCESS_KEYyour-secret-keyHuggingFaceexportHUGGINGFACEHUB_API_TOKENyour-token其他请参考相应提供商的文档进行配置。构建基础智能体首先创建一个可以回答问题并调用工具的简单智能体。本示例中的智能体使用所选语言模型、一个基础天气函数作为工具以及一个简单的提示词来引导其行为OpenAIfromlangchain.agentsimportcreate_agentdefget_weather(city:str)-str:获取指定城市的天气信息。returnf{city}的天气总是晴朗的agentcreate_agent(modelopenai:gpt-5.5,tools[get_weather],system_prompt你是一个乐于助人的助手,)resultagent.invoke({messages:[{role:user,content:旧金山的天气怎么样}]})print(result[messages][-1].content_blocks)当您运行代码并提示智能体告诉您旧金山的天气时智能体会利用该输入及其可用上下文。智能体理解您正在询问城市旧金山的天气因此会使用提供的城市名称调用天气工具。您可以通过更改模型名称并设置相应的API密钥来使用任何支持的模型。使用LangSmith追踪智能体内部发生的情况。请按照追踪快速入门进行设置。我们建议您同时设置LangSmith Engine它可以监控您的追踪、检测问题并提出修复建议。构建真实场景智能体在以下示例中您将构建一个能够回答有关文本文件问题的研究智能体。在此过程中您将探索以下概念详细的系统提示词以获得更好的智能体行为创建与外部数据集成的工具模型配置以获得一致响应用于类聊天交互的对话记忆深度智能体的内置功能测试您的智能体1. 定义系统提示词系统提示词定义智能体的角色和行为。保持具体且可操作SYSTEM_PROMPT你是一位文学数据助手。 ## 能力 - fetch_text_from_url将文档文本从URL加载到对话中。 不要猜测行数或位置——将它们基于保存文件中的工具结果。2. 创建工具工具通过调用您定义的函数让模型与外部系统交互。工具可以依赖运行时上下文也可以与智能体记忆交互。此示例使用一个工具从给定URL加载文档importurllib.errorimporturllib.requestfromlangchain.toolsimporttooltooldeffetch_text_from_url(url:str)-str:从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:returnf获取失败{e}textraw.decode(utf-8,errorsreplace)returntext工具应有良好的文档说明它们的名称、描述和参数名称会成为模型提示词的一部分。LangChain的tool装饰器添加元数据并支持使用ToolRuntime参数进行运行时注入。更多信息请参阅工具指南。3. 配置模型为您的使用场景设置合适的语言模型参数。例如OpenAIfromlangchain.chat_modelsimportinit_chat_model modelinit_chat_model(openai:gpt-5.5,temperature0.5,timeout300,max_tokens25000,)Google Geminimodelinit_chat_model(google:gemini-2.0-flash,temperature0.5,timeout300,max_tokens25000,)Claude (Anthropic)modelinit_chat_model(anthropic:claude-3-5-sonnet-20240620,temperature0.5,timeout300,max_tokens25000,)OpenRoutermodelinit_chat_model(openrouter:anthropic/claude-3.5-sonnet,temperature0.5,timeout300,max_tokens25000,)Fireworksmodelinit_chat_model(fireworks:accounts/fireworks/models/llama-v3p1-70b-instruct,temperature0.5,timeout300,max_tokens25000,)Basetenmodelinit_chat_model(baseten:model-id,temperature0.5,timeout300,max_tokens25000,)Ollamamodelinit_chat_model(ollama:llama3.1,temperature0.5,timeout300,max_tokens25000,)Azuremodelinit_chat_model(azure:deployment-name,temperature0.5,timeout300,max_tokens25000,)AWS Bedrockmodelinit_chat_model(bedrock:us.anthropic.claude-3-5-sonnet-20240620-v1:0,temperature0.5,timeout300,max_tokens25000,)HuggingFacemodelinit_chat_model(huggingface:meta-llama/Llama-3.1-70B-Instruct,temperature0.5,timeout300,max_tokens25000,)根据所选模型和提供商初始化参数可能有所不同请参阅其参考页面了解详情。4. 添加记忆为智能体添加记忆以保持跨交互的状态。这允许智能体记住之前的对话和上下文。fromlanggraph.checkpoint.memoryimportInMemorySaver checkpointerInMemorySaver()在生产环境中请使用持久化检查点保存器将消息历史保存到数据库中。请参阅添加和管理记忆了解更多详情。5. 创建并运行智能体现在将所有组件组合在一起并运行智能体。创建智能体有两个不同的框架LangChain智能体和深度智能体。LangChain智能体和深度智能体都为您提供了对工具、记忆等细粒度控制。两者的主要区别在于深度智能体自带一系列常用功能如规划、文件系统工具和子智能体。当您希望以最少设置获得最大能力时使用深度智能体当您需要细粒度控制时选择LangChain智能体。由于代码会使用《了不起的盖茨比》的完整文本来调用模型因此会使用大量令牌。您可以在下一步查看示例输出。让我们尝试两者fromlangchain.agentsimportcreate_agentfromdeepagentsimportcreate_deep_agent 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,)contentf古登堡计划托管了F·斯科特·菲茨杰拉德的《了不起的盖茨比》的完整纯文本副本。 URLhttps://www.gutenberg.org/files/64317/64317-0.txt 尽可能回答以下问题 1完整的古登堡文件中包含子字符串Gatsby的行有多少行统计行数而不是行内的出现次数每行以换行符结尾。 2文件中第一个包含Daisy的行的基于1的行号。 3两句话的中性概要。 请尽力回答1和2。如果您在任何时候意识到无法使用可用工具和推理**验证**确切答案请不要编造数字对该字段使用null并在how_you_computed_counts中说明限制。如果遇到任何错误请报告错误内容及错误消息。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)显示完整示例代码6. 查看结果结果将根据模型和执行情况而有所不同。LangChain智能体1包含Gatsby的行数null2第一个包含Daisy的行号null3概要《了不起的盖茨比》讲述了神秘百万富翁杰伊·盖茨比及其与旧日恋人黛西·布坎南重聚的执念由他的邻居尼克·卡拉威叙述。小说以咆哮的二十年代长岛为背景探索了财富、阶级和美国梦的虚幻本质等主题。how_you_computed_counts我使用fetch_text_from_url工具成功获取了电子书的完整文本。但是由于我无法访问代码执行环境如Python或文本处理工具如grep我无法确定性地按换行符拆分文本、遍历数千行并验证确切的行号或匹配计数。大型语言模型无法在没有外部计算工具的情况下在其上下文窗口中可靠地执行大规模文本的精确行计数或索引。根据指示我没有编造或猜测数字而是对精确计数和位置输出null。显示全部10行深度智能体查看两个选项卡的输出您会注意到LangChain智能体提供了答案但它们是估算值。该智能体缺少回答此问题的工具。您可能还会遇到提示词过长的错误。而深度智能体可以使用内置的write_todos工具规划其方法以分解研究任务。通过调用fetch_text_from_url工具加载文件以收集信息。使用文件系统工具grep和read_file管理上下文。根据需要生成子智能体将复杂的子任务委托给专门的子智能体。对于LangChain智能体您必须实现更多功能才能获得类似的服务水平并且可以根据需要沿路进行自定义。追踪智能体调用您使用LangChain构建的大多数有趣应用都会进行多次LLM调用。随着这些应用变得越来越复杂能够检查智能体内部究竟发生了什么变得很重要。最好的方法是使用LangSmith。注册LangSmith账号并设置以下内容以开始记录追踪exportLANGSMITH_TRACINGtrueexportLANGSMITH_API_KEY...设置完成后再次运行脚本然后在LangSmith上检查智能体调用期间发生的情况。要了解更多关于使用LangSmith追踪智能体的信息请参阅LangSmith文档。我们建议您同时设置LangSmith Engine它可以监控您的追踪、检测问题并提出修复建议。下一步您现在拥有可以执行以下操作的智能体理解上下文并记住对话智能地使用工具以一致的格式提供结构化响应通过上下文处理用户特定信息跨交互维护对话状态规划、研究和综合仅限深度智能体继续学习LangChain智能体添加和管理记忆、部署到生产环境深度智能体自定义选项、持久化记忆、部署到生产环境