1. LangChain 是什么?

LangChain 是一个帮助你构建 LLM 应用的 Python 框架。你可以用它实现:

  • 智能客服

  • RAG 知识库问答

  • Agent 智能工具执行

  • 复杂任务流程

  • 多模型协作

  • 记忆、上下文管理

支持 LLM:

  • OpenAI / DeepSeek / 阿里通义 Qwen / 玲珑 / 本地模型 / Ollama …

2. 安装

pip install langchain langchain-community langchain-openai
pip install sentence-transformers chromadb

如果使用 DeepSeek 或通义:

pip install dashscope
pip install openai    # 兼容 deepseek 官方 SDK 写法

3. 第一个示例:LLM 调用

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="deepseek-chat",
    api_key="your-key"
)

resp = llm.invoke("你好,介绍一下你自己")
print(resp)

4. 会话记忆(Memory 示例)

LangChain 提供记忆模块,让对话能“记住”上下文。

from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="deepseek-chat")

memory = ConversationBufferMemory()

chain = ConversationChain(
    llm=llm,
    memory=memory
)

print(chain.run("你好,我叫小明"))
print(chain.run("我叫什么名字?"))

会得到:

你好,小明!

你叫小明啊,我当然记得

5. 结构化输出(非常关键)

可以要求 LLM 返回 JSON(用于提取产品需求、字段抽取等)。

from langchain_openai import ChatOpenAI
from langchain.output_parsers import StructuredOutputParser, ResponseSchema

llm = ChatOpenAI(model="deepseek-chat")

schemas = [
    ResponseSchema(name="city", description="用户的归属地"),
    ResponseSchema(name="flow", description="流量需求"),
    ResponseSchema(name="rent", description="月租上限"),
]

parser = StructuredOutputParser.from_response_schemas(schemas)
format_instructions = parser.get_format_instructions()

prompt = f"""
用户输入:我要一个湖南长沙流量最大的套餐
请提取需求。
{format_instructions}
"""

resp = llm.invoke(prompt)
print(parser.parse(resp.content))

输出示例:

{
  "city": "湖南长沙",
  "flow": "最大",
  "rent": null
}

6. RAG 检索问答(知识库)

6.1 文档向量化写入 Chroma

from langchain_community.vectorstores import Chroma
from langchain.embeddings import HuggingFaceEmbeddings

embedding = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")

texts = ["LangChain 是一个 LLM 框架", "DeepSeek 是一个开源模型"]

db = Chroma.from_texts(texts, embedding, persist_directory="./chroma_db")

6.2 检索 + LLM 生成答案

retriever = db.as_retriever(k=2)
docs = retriever.invoke("什么是 LangChain")
print(docs)

7. 工具(Tool)+ Agent 智能执行

比如你要做一个“查询产品套餐”的工具:

from langchain.agents import Tool, initialize_agent
from langchain_openai import ChatOpenAI

def search_product(city: str, need_flow: str):
    return f"匹配到:{city} - {need_flow} - 月租 39 元套餐"

tool = Tool(
    name="search_product",
    description="根据归属地与需求查询产品",
    func=lambda q: search_product(**q)
)

llm = ChatOpenAI(model="deepseek-chat")

agent = initialize_agent(
    tools=[tool],
    llm=llm,
    agent="zero-shot-react-description",
    verbose=True
)

res = agent.run(
    "我要一个湖南长沙流量最大的产品"
)

print(res)

Agent 会自动:

  1. 识别意图

  2. 调用工具

  3. 返回结果

8. 在生产环境使用(强烈推荐)

  • LangGraph(构建多步骤智能体流程,比 agent 更稳定)

  • 流式输出 streaming=True

  • 自定义记忆(Redis / DB)

  • 工具执行自动化

  • 事件日志 + 调试(LangSmith)

9. 常见 FAQ

❓ 为什么会报错 “Missing 'Action:' after 'Thought:'”?

因为 你的模型不是 ReAct 格式输出格式不符合 Agent 预期

解决方法:
使用:

agent="zero-shot-react-description"

或使用 LangGraph 替代 Agent(推荐)。

10. 完整示例:构建一个“产品推荐智能客服”

https://blog.csdn.net/lianyinghhh/article/details/154952103?spm=1011.2124.3001.6209https://blog.csdn.net/lianyinghhh/article/details/154952103?spm=1011.2124.3001.6209

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐