Langchain动态切换模型、异步调用大模型、结构化输出和消息提示
·
动态切换模型
import os
from dotenv import load_dotenv
from langchain_core.runnables import ConfigurableField
from langchain_openai import ChatOpenAI
# 加载环境变量
load_dotenv()
# 1. 初始化基础模型(必须指定默认模型)
base_model = ChatOpenAI(
base_url=os.getenv("DEEPSEEK_BASE_URL"),
api_key=os.getenv("DEEPSEEK_API_KEY"),
temperature=0.7,
model_name="deepseek-chat" # 注意这里参数名是 model_name
)
# 2. 用 configurable_fields 配置可切换的 model_name
model = base_model.configurable_fields(
model_name=ConfigurableField(
id="model_name",
name="Model",
description="选择DeepSeek模型"
)
)
# 3. 调用示例
if __name__ == "__main__":
# 使用默认模型 deepseek-chat
res1 = model.invoke("你好,我是默认模型")
print("结果1:", res1.content)
# 动态切换为deepseek-coder
res2 = model.invoke(
"写一段Python排序代码",
config={"configurable": {"model_name": "deepseek-coder"}}
)
print("结果2:", res2.content)
异步调用大模型
import asyncio
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
# 加载环境变量
load_dotenv()
model = ChatOpenAI(
base_url=os.getenv("DEEPSEEK_BASE_URL", "https://api.deepseek.com"),
api_key=os.getenv("DEEPSEEK_API_KEY"),
model="deepseek-chat", # DeepSeek 模型名
temperature=0.7
)
async def main():
# 调用3次大模型,3次独立
results = await model.abatch([
"什么是机器学习?",
"什么是深度学习?",
"什么是自然语言处理?"
])
for result in results:
print(result.content)
asyncio.run(main())
结构化输出
import os
from dotenv import load_dotenv
from typing import TypedDict
from langchain_deepseek import ChatDeepSeek
# 加载环境变量
load_dotenv()
# 1. 定义结构化输出
class MovieReview(TypedDict):
title: str
rating: float
summary: str
recommendation: str
# 2. 初始化 DeepSeek 模型
model = ChatDeepSeek(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url=os.getenv("DEEPSEEK_BASE_URL", "https://api.deepseek.com"),
model="deepseek-chat",
temperature=0
)
# 3. 绑定结构化输出
structured_model = model.with_structured_output(MovieReview)
# 4. 调用测试
if __name__ == "__main__":
result = structured_model.invoke("评价电影《怒袭》")
print(result)
消息提示
import os
from dotenv import load_dotenv
from langchain_deepseek import ChatDeepSeek
from langchain_core.messages import SystemMessage,HumanMessage
load_dotenv()
model=ChatDeepSeek(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url=os.getenv("DEEPSEEK_BASE_URL", "https://api.deepseek.com"),
model="deepseek-chat",
temperature=0
)
# SystemMessage,规则、身份、要求
# HumanMessage, 只放用户每一轮的提问
messages=[
HumanMessage(content="你是一个物理学教授"),
SystemMessage(content="用一句话解释什么是量子计算"),
]
result = model.invoke(messages)
print(f"结果: {result.content}")
# AIMessage 对象的常用属性
print(f"content: {result.content}")
print(f"response_metadata: {result.response_metadata}")
print(f"id: {result.id}")
print(f"usage_metadata: {result.usage_metadata}")
更多推荐

所有评论(0)