deepseek-r1本地ollama部署后,如何API调用(简单易用)

  • 时间:2025-11-17 23:40 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要:deepseek-r1本地ollama部署之后,我们希望可以通过调用API的方式,将deepseek-r1为我所用,灵活地应用到自己的程序中。下面是详细介绍如何API调用本地的deepseek-r1。ollama调用API的方式有许多,下面介绍最常见的openai库进行调用。1 导入openai库#如果没有则安装 pip install openai from openai import Open

deepseek-r1本地ollama部署

之后,我们希望可以通过调用API的方式,将deepseek-r1为我所用,灵活地应用到自己的程序中。下面是详细介绍如何API调用本地的deepseek-r1。

ollama调用API的方式有许多,下面介绍最常见的openai库进行调用。

1 导入openai库

#如果没有则安装 pip install openai
from openai import OpenAI 

2 启动服务

client = OpenAI(
    base_url='http://localhost:11434/v1/',  
    # 表明代码正在连接到本地计算机 (localhost) 上的一个服务,/v1/: 这部分指定 API 的版本
    api_key='ollama',
)

3 查看有哪些可用的模型

list_completion = client.models.list()
print (list_completion)

显示:

SyncPage[Model](data=[Model(id='deepseek-r1:32b', created=1738479908, object='model', owned_by='library'), Model(id='deepseek-r1:7b', created=1738471937, object='model', owned_by='library'), Model(id='deepseek-r1:1.5b', created=1738430324, object='model', owned_by='library')], object='list')

可以看到,我已经安装好了3个模型:

'deepseek-r1:32b'

'deepseek-r1:7b'

'deepseek-r1:1.5b'

4 开始最简单的对话

completion = client.completions.create(
model="deepseek-r1:1.5b",
prompt="你好",
)
print(completion.choices[0].text)

模型正常回复,祝贺你已经完成了最简单的API调用。

5 查看tokens数

print(f"输入 Tokens: {completion.usage.prompt_tokens}")
print(f"回复 Tokens: {completion.usage.completion_tokens}")
print(f"总 Tokens: {completion.usage.total_tokens}")

可得到:

输入 Tokens: 4
回复 Tokens: 87
 Tokens: 91

6 一个完整的会话API示例

6.1 第必定义一个AI回复的函数:

def get_ai_response(user_message, history):
    """
    参数:
      user_message: 用户的消息(字符串)。
      history: 当前的对话历史(字典列表)。
    返回:
      AI的响应(字符串),如果发生错误则返回None。同时返回更新后的对话历史。
    """
    # 添加用户消息到对话历史记录
    history.append({'role': 'user', 'content': user_message})
    try:
        stream = client.chat.completions.create(
            messages=history,
            model='deepseek-r1:1.5b',  # 确保模型已下载
            stream=True  # 流式响应
        )
        ai_response = ""  # 初始化回复内容
        print("AI: ", end="", flush=True)  # 表明AI回复
        for chunk in stream:
            if chunk.choices[0].delta.content is not None:
                ai_response += chunk.choices[0].delta.content  # 回复内容不断叠加
                print(chunk.choices[0].delta.content, end="", flush=True)  # Print each chunk
        print() # 打印一新行
        # 添加 AI 响应到对话历史记录
        history.append({'role': 'assistant', 'content': ai_response})
        return ai_response, history
    except Exception as e:
        print(f"An error occurred: {e}")
        return None, history

6.2 初始化对话历史记录并添加系统指令

conversation_history = []
# 添加系统指令
system_instruction = {
    'role': 'system',
    'content': '你是一个友善的助手,总是用简洁明了的语言回答问题。'
}
conversation_history.append(system_instruction)

6.3 连续会话

# 用户的第一条消息
user_message_1 = "你好,请详细介绍什么是人工智能"
ai_response_1, conversation_history = get_ai_response(user_message_1, conversation_history)

这时,模型就会流式输出,并打印显示。

# 用户的第二条消息
user_message_1 = "目前请详细讲解第一条"
ai_response_1, conversation_history = get_ai_response(user_message_1, conversation_history)

我们看到,模型会延续之前的话题,接着输出有关人工智能第一条的话题。

# 用户的第三条消息
user_message_1 = "请讲讲它的用途"
ai_response_1, conversation_history = get_ai_response(user_message_1, conversation_history)

我们继续看到,模型会继续讨论人工智能的用途。

6.4 查看完整的对话历史

print("
Full Conversation History:")
for message in conversation_history:
    print(f"{message['role']}: {message['content']}")
  • 全部评论(0)
手机二维码手机访问领取大礼包
返回顶部