1、LangChian 环境安装
想让当前虚拟环境以后默认走清华源,可先执行:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
- 安装langchain
- 安装langchain-openai
- 安装openai
- 安装dotenv
- 安装langchain-core
# langchain 提供核心框架(Chain, Agent, Memory, Retriever等)
pip install langchain -i https://pypi.tuna.tsinghua.edu.cn/simple
# 提供OpenAI专用组件(LLM, Chat, Embeddings等),依赖 openai SDK
pip install langchain-openai -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple
# 通过 python-dotenv 库读取 env 文件中的环境变量,并加载到当前运行的环境中
pip install python-dotenv -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install langchain-core
2、LangChian 大模型调用
qwen-plus 模型
# 1.导入依赖
import os
from dotenv import load_dotenv
from langchain.chat_models import init_chat_model
load_dotenv(encoding='utf-8')
# 2.实例化模型
# 什么是关键字参数 k1=v1 ,k2 = v2
model = init_chat_model(
model="qwen-plus",
model_provider="openai",
api_key=os.getenv("aliQwen-api"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
# 3.调用模型
print(model.invoke("你是谁").content)
print("*" * 50)
deepseek模型
# LangChain1.0+版本使用方式,目前主流,多模型共存
# 1.导入依赖
from dotenv import load_dotenv
from langchain.chat_models import init_chat_model
import os
# .env文件读取
load_dotenv()
说明:
model="deepseek-chat" 和 base_url="https://api.deepseek.com"
刚好匹配默认的 model_provider(如 deepseek),因此无需显式传入,函数内部做了智能推导
如果切换成其他模型(如 OpenAI),若默认值不匹配,就需要显式指定 model_provider="openai"。
"""
model = init_chat_model(
model="deepseek-chat", # deepseek-chat 对应 DeepSeek-V3.2 的非思考模式
model_provider="deepseek",
api_key=os.getenv("deepseek-api"),
base_url="https://api.deepseek.com"
)
# 5.调用模型v2
print(model.__dict__)
print(model.invoke("你是谁").content)
安装pip install langchian-deepseek
3、流式输出
一次性输出 调用invoke方法
流式输出 调用stream 关键代码
llm.stream("介绍下langchain,300字以内")
for chunk in responseStream:
print(chunk.content,end="")
完整代码
# 导入必要的库
from langchain_openai import ChatOpenAI
import os
from dotenv import load_dotenv
from langchain_core.exceptions import LangChainException
# 加载.env文件中的环境变量(指定编码,避免中文乱码)
load_dotenv(encoding='utf-8')
# 配置日志(可选,便于调试)
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
def init_llm_client() -> ChatOpenAI:
"""
初始化LLM客户端(封装成函数,提高复用性)
Returns:
ChatOpenAI: 初始化后的LLM客户端实例
"""
# 1. 读取环境变量并做非空校验
api_key = os.getenv("QWEN_API_KEY")
if not api_key:
raise ValueError("环境变量 QWEN_API_KEY 未配置,请检查.env文件")
# 2. 初始化LLM客户端(参数命名规范,添加注释)
llm = ChatOpenAI(
model="deepseek-v3.2", # 模型名称
api_key=api_key, # 通义千问API密钥
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", # 阿里云兼容接口地址
temperature=0.7, # 可选:添加温度参数,控制输出随机性
max_tokens=2048 # 可选:限制输出长度,避免超限
)
return llm
def main():
"""主函数:封装核心逻辑,符合Python工程化规范"""
try:
# 初始化客户端
llm = init_llm_client()
logger.info("LLM客户端初始化成功")
# 调用模型(问题用变量存储,提高可读性)
question = "你是谁"
response = llm.invoke(question)
# 格式化输出结果(而非直接打印原始对象)
logger.info(f"问题:{question}")
logger.info(f"回答:{response.content}")
print("====================以下是流式输出,另一种调用方式")
print("*" * 50)
responseStream = llm.stream("介绍下langchain,300字以内")
for chunk in responseStream:
print(chunk.content,end="")
# 捕获具体异常(而非宽泛的Exception)
except ValueError as e:
logger.error(f"配置错误:{str(e)}")
except LangChainException as e:
logger.error(f"模型调用失败:{str(e)}")
except Exception as e:
logger.error(f"未知错误:{str(e)}")
# 脚本入口(符合Python规范,避免导入时执行代码)
if __name__ == "__main__":
main()
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!
浙公网安备 33010602011771号