☰
Langchain实战2-入门和基础
2026/9/28 4:33:06 网站建设 项目流程

本节完成 LangChain 1.0 的第一个可运行闭环:安装依赖、配置密钥、初始化模型、发送消息、创建 Agent,并分别体验同步、批量、异步和流式调用。

1. 环境准备

推荐在虚拟环境中安装 LangChain 1.x:

python-mvenv .venvsource.venv/bin/activate pipinstall-Ulangchain langgraph langchain-openai

确认版本:

importlangchainimportlanggraphprint(langchain.__version__)print(langgraph.__version__)

如果使用 OpenAI 兼容模型服务,还需要设置密钥和服务地址:

importos API_KEY=os.getenv("OPENAI_API_KEY")BASE_URL=os.getenv("OPENAI_BASE_URL")ifnotAPI_KEY:raiseRuntimeError("请先配置 OPENAI_API_KEY")

2. 1.0 的统一模型入口

fromlangchain.chat_modelsimportinit_chat_model model=init_chat_model("Qwen/Qwen3-8B",model_provider="openai",base_url=BASE_URL,api_key=API_KEY,temperature=0.2,max_tokens=1024,)

init_chat_model()的价值在于统一不同模型供应商的初始化方式。业务层继续调用invoke()、stream()或ainvoke(),更换模型时通常只需要修改配置。

3. 最简单的模型调用

response=model.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="请解释什么是装饰器。"),]response=model.invoke(messages)print(response.content)

消息对象比拼接字符串更可靠,因为它明确区分角色,并能容纳工具消息、多模态内容和元数据。

5. 批量、异步与流式调用

5.1 批量调用

questions=["什么是 RAG?","什么是 Agent?","什么是 LangGraph?",]responses=model.batch(questions)foriteminresponses:print(item.content)

batch()适合离线处理多个输入,但仍应关注供应商的并发和限流规则。

5.2 异步调用

importasyncioasyncdefmain():response=awaitmodel.ainvoke("解释 LangChain 1.0")print(response.content)asyncio.run(main())

Web 服务中应优先使用异步方法,避免模型请求期间阻塞工作线程。

5.3 流式调用

forchunkinmodel.stream("写一段关于 Agent 的简短介绍"):ifchunk.content:print(chunk.content,end="",flush=True)

流式输出不会降低总生成时间,但能显著改善用户看到首个 Token 的等待体验。

6. 创建第一个 Agent

fromlangchain.agentsimportcreate_agent agent=create_agent(model=model,tools=[],system_prompt="你是一个严谨、简洁的中文助手。",)result=agent.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 返回值不能直接打印

模型返回的是消息对象,应读取.content;Agent 返回状态字典,应读取result["messages"][-1].content。

8.4 Notebook 中异步报错

Notebook 已运行事件循环时,可直接使用:

response=awaitmodel.ainvoke("你好")

9. 本节小结

最小闭环只有三步:初始化模型 → 使用统一消息格式 → 通过模型或 Agent 执行。掌握这个闭环后,工具、记忆、RAG 和 Middleware 都是在同一状态模型上继续扩展。

视频:BV1xwVr6FEh4,P34,时长 17:17。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询