LangChain的LLM 应用开发
·
参考
LangChain文档.langchain
Chroma向量数据库
RAG检索增强生成
飞书AI机器人agent+MCP+Skill设计与实现
LangChain例子
lang_chain_demo.py
uv run .\lang_chain\lang_chain_demo.py
"""
LangChain 最小示例
==================
LangChain 是构建 LLM 应用的框架,把「调用模型」「组装 prompt」
「管理对话历史」等常见步骤封装成统一的模块。
本示例演示三个核心用法:
1. 最简单的一问一答
2. 带系统提示的对话
3. 多轮对话(带上下文记忆)
安装依赖:
uv add langchain langchain-openai python-dotenv
.env 文件:
OPENAI_API_KEY=sk-...
"""
import os
import sys
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
# 设置 OPENAI_API_KEY 环境变量
os.environ["OPENAI_API_KEY"] = "sk-"
# 设置 OPENAI_BASE_URL 环境变量
os.environ["OPENAI_BASE_URL"] = "https://api.edgefn.net/v1"
#load_dotenv() # 从 .env 文件读取 OPENAI_API_KEY
# ─────────────────────────────────────────────
# 1. 初始化模型
# ─────────────────────────────────────────────
# temperature : 0 = 确定性强,1 = 更有创意
# max_tokens : 限制回复长度
llm = ChatOpenAI(model="MiniMax-M2.5", temperature=0.7, max_tokens=500)
# ─────────────────────────────────────────────
# 2. 最简单的一问一答
# ─────────────────────────────────────────────
messages = [
SystemMessage(content="你必须用中文回答所有问题。回答简洁、直接。"),
HumanMessage(content="Python 和 Go 有什么区别?"),
]
# response = llm.invoke("中文回答 Python 和 Go 有什么区别?")
response = llm.invoke(messages)
print("=== 简单问答 ===")
print(response.content)
print()
# ─────────────────────────────────────────────
# 3. 带系统提示
# ─────────────────────────────────────────────
# SystemMessage : 设定模型的角色和行为
# HumanMessage : 用户的输入
messages = [
SystemMessage(content="你是一个专业的 Python 代码审查员,回答简洁、直接。"),
HumanMessage(content="for i in range(len(lst)): 这样写有什么问题?"),
]
response = llm.invoke(messages)
print("=== 带系统提示 ===")
print(response.content)
print()
# ─────────────────────────────────────────────
# 4. 多轮对话(手动维护历史)
# ─────────────────────────────────────────────
# LangChain 不会自动记住上下文,需要把历史消息一起传进去。
# 每轮对话的流程:
# ① 把用户消息加入历史
# ② 把完整历史传给模型
# ③ 把模型回复也加入历史,供下一轮使用
chat_history = [
SystemMessage(content="你是一个 Python 教学助手。")
]
def chat(user_input: str):
chat_history.append(HumanMessage(content=user_input))
response = llm.invoke(chat_history)
chat_history.append(AIMessage(content=response.content)) # 保存 AI 回复
return response.content
print("=== 多轮对话 ===")
print("用户:什么是列表推导式?")
print("AI :", chat("什么是列表推导式?"))
print()
print("用户:给我一个实际的例子")
print("AI :", chat("给我一个实际的例子")) # 模型能记住上一轮的话题
sys.exit(0)
更多推荐


所有评论(0)