动态切换模型

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}")

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐