在LangChain中以OpenAI兼容模式调用本地DeepSeek

我们可以使用Ollama在本地部署DeepSeek大模型;Ollama本身提供了兼容OpenAI的调用方式的,同时LangChain也支持调用OpenAI;
一、以OpenAI兼容模型调用Ollama中的DeepSeek

1.安装openai的包;

pip install openai

2.通过OpenAI调用本地的DeepSeek大模型;

这里api_key必须填写,但是可以填写任意值;

from openai import OpenAI

client = OpenAI(
    base_url='http://localhost:11434/v1/',

    # required but ignored
    api_key='ollama',
)

chat_completion = client.chat.completions.create(
    messages=[
        {
            'role': 'user',
            'content': '天空为什么是蓝色的',
        }
    ],
    model='deepseek-r1',
)


print(chat_completion.choices[0].message.content)

二、在LangChain中以OpenAI兼容模型调用DeepSeek;

Langchain中提供了init_chat_model来统一大部分模型的调用,但是不能设置base url和api key;

from langchain.chat_models import init_chat_model

model = init_chat_model("gpt-4o-mini", model_provider="openai")

但是LangChain提供了ChatOpenAI来支持OpenAI的集成;

1.安装OpenAI的包;

pip install -U langchain-openai

2.通过ChatOpenAI指定api key和base url;

from langchain_core.messages import HumanMessage, SystemMessage
from langchain_openai import ChatOpenAI


model = ChatOpenAI(
    model='deepseek-r1', 
    api_key="ollama",
    base_url="http://localhost:11434/v1/"
    )

messages = [
    SystemMessage("你是一个优秀的儿童物理科学科普者。"),
    HumanMessage("你好,天空为什么是蓝色的?")
]

res = model.invoke(messages)
print(res.content)

三、以chain方式调用

from langchain_core.prompts import ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate
from langchain_openai import ChatOpenAI

def get_prompt():
    prompt = ChatPromptTemplate.from_messages(
        [
            SystemMessagePromptTemplate.from_template("你是一个很有帮助的翻译助手,请将用户的输入从{input_language}成{output_language}"),
            HumanMessagePromptTemplate.from_template("{input}")            
        ]
    )

    return prompt

def get_llm():
    llm = ChatOpenAI(
        base_url= "http://localhost:11434/v1/",
        api_key="ollama",
        model="deepseek-r1"
    )

    return llm

def rag():
    llm = get_llm()
    prompt = get_prompt()
    chain = prompt | llm
    input={
        "input_language":"汉语",
        "output_language":"英语",
        "input":"我爱我的祖国。"
    }
    res = chain.invoke(input)
    print(res.content)

rag()

四、以流式方式进行调用

from langchain_core.prompts import ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate
from langchain_openai import ChatOpenAI


def get_prompt():
    prompt = ChatPromptTemplate.from_messages(
        [
            SystemMessagePromptTemplate.from_template("你是一个很有帮助的翻译助手,请将用户的输入从{input_language}成{output_language}"),
            HumanMessagePromptTemplate.from_template("{input}")            
        ]
    )

    return prompt

def get_llm():
    llm = ChatOpenAI(
        base_url= "http://localhost:11434/v1/",
        api_key="ollama",
        model="deepseek-r1"
    )

    return llm

def rag():
    check_and_set_smith_variable()
    llm = get_llm()
    prompt = get_prompt()
    chain = prompt | llm
    input={
        "input_language":"汉语",
        "output_language":"英语",
        "input":"我爱我的祖国。"
    }

    for t in chain.stream(input):
        print(t.content, end="")
   

rag()
### 将 Spring AI 与 DeepSeek 集成并使用 OpenAI API 为了使应用程序能够利用 Spring AI 并通过 DeepSeekOpenAI 兼容模式进行交互,开发者需遵循特定配置流程[^1]。 #### 准备工作环境 确保项目已引入必要的依赖库。对于 Maven 构建工具而言,在 `pom.xml` 文件内添加如下依赖项: ```xml <dependency> <groupId>com.deepseek</groupId> <artifactId>deepseek-openai-client</artifactId> <version>${latest.version}</version> </dependency> ``` #### 创建客户端实例 创建一个用于访问 DeepSeek 接口的服务类,并初始化支持 OpenAI 协议的客户对象。这允许应用层逻辑如同直接面对官方服务般简洁明了地发起请求。 ```java import com.deepseek.openai.client.OpenAIClient; import org.springframework.stereotype.Service; @Service public class AiService { private final OpenAIClient client; public AiService() { this.client = new OpenAIClient("your_api_key", "https://api.deepseek.com/v1"); } // 方法定义... } ``` #### 发起 API 请求 借助于上述构建好的 `client` 对象执行具体的自然语言处理任务或其他智能计算功能。例如发送提示词获取回复内容的操作可参照下面代码片段所示方式完成。 ```java String response = client.createChatCompletion( Arrays.asList(new ChatMessage(ChatRole.USER, "你好")), Model.ID_003, null ); System.out.println(response); ``` 以上过程展示了怎样快速搭建基于 Java 技术栈的应用程序框架,从而有效连接至第三方提供的先进人工智能服务平台——DeepSeek,同时享受后者所提供的广泛兼容性和便捷易用性的双重优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值