LangChain:Model大模型接口
·
langchain语言模型介绍
一个 AI 应用的核心就是它所依赖的大语言模型,LangChain作为一个“工具”,不提供任何 LLMs,而是依赖于第三方集成各种大模型。比如,将 OpenAI、Anthropic、Hugging Face 、LlaMA、阿里Qwen、ChatGLM等平台的模型无缝接入到你的应用。
LangChain 模型接口可参考官方文档:https://reference.langchain.com/python/langchain_core/language_models/
LangChain中将大语言模型分为以下几种,我们主要使用的是聊天模型:
ChatModel主要参数

以上的标准参数,也只是适用于部分的大语言模型,有些参数在特定模型中可能是无效的,这些标准化参数仅对 LangChain 官方提供集成包的模型(如 langchain-openai、langchain-anthropic)生效,在langchain-community包中的第三方模型,则不需要遵守这些标准化参数的规则。
Message组件
调用模型后返回了一条AI消息,在LangChain中,消息有几种不同的类型。所有消息都有 type 、 content 、 response_metadata 等属性。
下面是这几个属性的作用:

安装Langchain包
pip install langchain
pip install langchain-deepseek
pip install langchain-ollama
pip install langchain-community
创建秘钥环境变量
touch .env
根据自己的API密钥添加下面内容到.env文件中
DEEPSEEK_API_KEY=XXXX
QWEN_API_KEY=XXXX
OPENAI_API_KEY=XXX
#读取变量到当前环境中
import os
from dotenv import load_dotenv
load_dotenv(override=True)
deepseek_api_key = os.getenv("DEEPSEEK_API_KEY")
print(f"Deepseek API Key: {deepseek_api_key}")
调用聊天模型
from langchain_openai import ChatOpenAI
from langchain_deepseek import ChatDeepSeek
# llms = ChatOpenAI()
llms_ds = ChatDeepSeek(
model="deepseek-chat",
temperature=0,
max_tokens=None,
timeout=None,
max_retries=2,
api_key=deepseek_api_key,
)
print(llms_ds.invoke("什么是LangChain?"))
from openai import OpenAI
import os
from dotenv import load_dotenv
load_dotenv(override=True)
client = OpenAI(
# 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
api_key=os.getenv("QWEN_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
messages = [{"role": "user", "content": "你是谁"}]
completion = client.chat.completions.create(
model="qwen3.6-plus", # 您可以按需更换为其它深度思考模型
messages=messages,
extra_body={"enable_thinking": True},
stream=True
)
is_answering = False # 是否进入回复阶段
print("\n" + "=" * 20 + "思考过程" + "=" * 20)
for chunk in completion:
delta = chunk.choices[0].delta
if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
if not is_answering:
print(delta.reasoning_content, end="", flush=True)
if hasattr(delta, "content") and delta.content:
if not is_answering:
print("\n" + "=" * 20 + "完整回复" + "=" * 20)
is_answering = True
print(delta.content, end="", flush=True)
更多推荐

所有评论(0)