LangChain 基础使用:从入门到实战
<p>很多人看完 LangChain 文档还是不知道怎么用。这篇不聊概念,直接从代码出发。</p><h2>环境准备</h2>
<pre><code>pip install langchain langchain-openai</code></pre>
<p>你需要准备一个 OpenAI API Key,换成国内模型也行,思路一样。</p>
<h2>1. LLM 调用:最基础的玩法</h2>
<p>LangChain 给 LLM 调用提供了统一接口:</p>
<pre><code>from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4", api_key="your-key")
response = llm.invoke("用一句话解释什么是 LangChain")
print(response.content)</code></pre>
<p>三行代码,完成第一次调用。</p>
<h2>2. Prompt 模板:别再手动拼字符串</h2>
<p>写 LLM 应用最烦的就是 Prompt 拼装。LangChain 的 PromptTemplate 帮你管起来:</p>
<pre><code>from langchain_core.prompts import PromptTemplate
template = PromptTemplate.from_template(
"请帮我写一篇关于{topic}的{length}字简介"
)
prompt = template.invoke({"topic": "Python", "length": 200})
response = llm.invoke(prompt)</code></pre>
<p>模板的好处是 Prompt 和代码分离,改 Prompt 不用动逻辑。</p>
<h2>3. Chain:把多个步骤串起来</h2>
<p>单个 LLM 调用的场景有限。LangChain 的价值在于把多个步骤串联成链:</p>
<pre><code>from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=template)
result = chain.invoke({"topic": "LangChain", "length": 300})</code></pre>
<p>这就是 Chain——把输入一层层传递,最后出结果。</p>
<h2>4. 对话历史管理</h2>
<p>做聊天机器人必须处理历史消息。LangChain 的 ChatMessageHistory 帮你管:</p>
<pre><code>from langchain_core.chat_history import InMemoryChatMessageHistory
history = InMemoryChatMessageHistory()
history.add_user_message("你好,我是小明")
history.add_ai_message("你好小明,有什么可以帮你的?")
messages = history.messages
response = llm.invoke(messages)</code></pre>
<p>每次把 history 传进去,模型就能理解上下文了。</p>
<h2>5. 输出解析:拿到结构化数据</h2>
<p>LLM 返回的是文本,想拿结构化结果需要解析器:</p>
<pre><code>from langchain_core.output_parsers import StrOutputParser
parser = StrOutputParser()
result = parser.invoke(response)</code></pre>
<p>配合 Chain 用:</p>
<pre><code>chain = template | llm | parser</code></pre>
<p>| 这个管道操作符是 LangChain Expression Language 的核心,把组件串联起来。</p>
<h2>6. 实战:做一个简单的读书笔记助手</h2>
<p>来一个完整的例子:根据书名自动生成读书笔记。</p>
<pre><code>from langchain_openai import ChatOpenAI
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
llm = ChatOpenAI(model="gpt-4", api_key="your-key")
template = PromptTemplate.from_template(
"你是一个读书笔记助手。请为《{book}》写一份简短笔记,"
"包括:核心观点、关键章节、读后感想。"
)
parser = StrOutputParser()
chain = template | llm | parser
result = chain.invoke({"book": "人类简史"})
print(result)</code></pre>
<p>核心代码就这么点。</p>
<h2>7. 调试技巧</h2>
<p>开发时想看 Chain 内部发生了什么:</p>
<pre><code>from langchain_core.tracers import ConsoleCallbackHandler
chain.invoke(
{"book": "思考,快与慢"},
config={"callbacks": }
)</code></pre>
<p>ConsoleCallbackHandler 会打印每个步骤的输入输出,定位问题很好用。</p>
<h2>8. 几个避坑提醒</h2>
<p><strong>别在生产环境用 InMemoryChatMessageHistory。</strong> 重启就没了,正式项目用 Redis 或者数据库存历史。</p>
<p><strong>Model、Prompt、Chain、Memory</strong>,把这几个核心概念摸透,LangChain 就理解了七成。</p>
<p><strong>官方文档的 Quickstart 值得过一遍。</strong> 最新的 Expression Language 写法比旧版简洁很多,建议从一开始就用新写法。</p>
<p>上手最快的方式就是找个具体需求,把代码敲一遍。</p><br><br>
来源:https://www.cnblogs.com/chenjinhai/p/19843462
頁:
[1]