
本节完成 LangChain 1.0 的第一个可运行闭环安装依赖、配置密钥、初始化模型、发送消息、创建 Agent并分别体验同步、批量、异步和流式调用。1. 环境准备推荐在虚拟环境中安装 LangChain 1.xpython-mvenv .venvsource.venv/bin/activate pipinstall-Ulangchain langgraph langchain-openai确认版本importlangchainimportlanggraphprint(langchain.__version__)print(langgraph.__version__)如果使用 OpenAI 兼容模型服务还需要设置密钥和服务地址importos API_KEYos.getenv(OPENAI_API_KEY)BASE_URLos.getenv(OPENAI_BASE_URL)ifnotAPI_KEY:raiseRuntimeError(请先配置 OPENAI_API_KEY)2. 1.0 的统一模型入口fromlangchain.chat_modelsimportinit_chat_model modelinit_chat_model(Qwen/Qwen3-8B,model_provideropenai,base_urlBASE_URL,api_keyAPI_KEY,temperature0.2,max_tokens1024,)init_chat_model()的价值在于统一不同模型供应商的初始化方式。业务层继续调用invoke()、stream()或ainvoke()更换模型时通常只需要修改配置。3. 最简单的模型调用responsemodel.invoke(请用三句话介绍 LangChain 1.0)print(type(response))print(response.content)返回值通常是AIMessage文本位于response.content同时还可能包含response_metadata模型、结束原因、请求信息usage_metadata输入、输出及总 Token 数tool_calls模型请求调用的工具id本次消息标识。4. 使用消息对象fromlangchain_core.messagesimportSystemMessage,HumanMessage messages[SystemMessage(content你是一名耐心的 Python 教师。),HumanMessage(content请解释什么是装饰器。),]responsemodel.invoke(messages)print(response.content)消息对象比拼接字符串更可靠因为它明确区分角色并能容纳工具消息、多模态内容和元数据。5. 批量、异步与流式调用5.1 批量调用questions[什么是 RAG,什么是 Agent,什么是 LangGraph,]responsesmodel.batch(questions)foriteminresponses:print(item.content)batch()适合离线处理多个输入但仍应关注供应商的并发和限流规则。5.2 异步调用importasyncioasyncdefmain():responseawaitmodel.ainvoke(解释 LangChain 1.0)print(response.content)asyncio.run(main())Web 服务中应优先使用异步方法避免模型请求期间阻塞工作线程。5.3 流式调用forchunkinmodel.stream(写一段关于 Agent 的简短介绍):ifchunk.content:print(chunk.content,end,flushTrue)流式输出不会降低总生成时间但能显著改善用户看到首个 Token 的等待体验。6. 创建第一个 Agentfromlangchain.agentsimportcreate_agent agentcreate_agent(modelmodel,tools[],system_prompt你是一个严谨、简洁的中文助手。,)resultagent.invoke({messages:[{role:user,content:LangChain 和 LangGraph 是什么关系}]})print(result[messages][-1].content)Agent 的输入与输出都是状态字典。messages中不仅保存用户消息与模型回答后续还会保存工具请求和工具结果。7. 从 Chain 转向 Graph维度旧版常见写法1.0 推荐方式Agent 创建Agent Executor 多步组合create_agent()执行状态调用链内部维护显式 State扩展能力Callback、HookMiddleware复杂流程嵌套 ChainLangGraph调用入口多种.run()/.call()invoke()/stream()8. 常见问题8.1 401 或鉴权失败检查 API Key、Base URL 和模型供应商是否匹配不要在地址末尾重复拼接/v1。8.2 模型名不存在模型名由供应商决定。OpenAI 兼容协议并不意味着所有供应商都支持相同模型名。8.3 返回值不能直接打印模型返回的是消息对象应读取.contentAgent 返回状态字典应读取result[messages][-1].content。8.4 Notebook 中异步报错Notebook 已运行事件循环时可直接使用responseawaitmodel.ainvoke(你好)9. 本节小结最小闭环只有三步初始化模型 → 使用统一消息格式 → 通过模型或 Agent 执行。掌握这个闭环后工具、记忆、RAG 和 Middleware 都是在同一状态模型上继续扩展。视频BV1xwVr6FEh4P34时长 17:17。