AI入门7:python三种API方式调用本地Ollama+DeepSeek

发布于:2025-03-16 ⋅ 阅读:(33) ⋅ 点赞:(0)

回顾 

书接上篇:各种方式搭建了本地知识库:

AI入门:AI模型管家婆ollama的安装和使用-CSDN博客

AI入门2:本地AI部署,用ollama部署deepseek(私有化部署)-CSDN博客

AI入门3:给本地deepseek设置网页访问方式(UI插件Page Assist 安装)_deepseek本地部署网页访问-CSDN博客

  AI入门4:基于Ollama+DeepSeek,用Page Assist搭建本地知识库-CSDN博客 

AI入门5:基于Ollama+DeepSeek,用AnythingLLM搭建本地知识库-CSDN博客

AI入门6:基于Ollama+DeepSeek,用RAGFlow搭建本地知识库_ragflow ports not available-CSDN博客

本节目标

使用vsCode开发环境,用python来调用本地deepseek。是的,我们要进入程序控制大模型了,有点高级感了,娃哈哈~

准备工作

 必做:

1、本地ollama安装,及deepseek部署,参考前面文档:AI入门1、AI入门2

2、vscode环境,安装python,参考之前的文档

【菜鸟飞】用vsCode搭建python运行环境-CSDN博客

 选读文章:

【菜鸟飞】Conda安装部署与vscode的结合使用-CSDN博客

其他选读文档,通过python访问公网模型,就是通过注册tocken访问:

【菜鸟飞】通过vsCode用python访问deepseek-r1等模型-CSDN博客

 vs运行环境设置

1、确认ollama启动,及安装了deepseek等模型,通过浏览器访问ollama地址验证:http://localhost:11434/

2、打开vsCode,准备一个全新的环境,我用的是python3.12.9,具体运行环境设置方式,在上面的参考文档里有。

第一种访问方式:OpenAI

‌OpenAI API‌提供了一系列强大的工具和接口,适用于各种自然语言处理、代码生成和图像处理任务。 

用pip方式安装 OpenAI Python 库,命令为:

pip install --upgrade openai

 执行界面如下:

​​

 执行过程如果出错,参考之前文档中的错误处理方式:

 【菜鸟飞】通过vsCode用python访问deepseek-r1等模型-CSDN博客

创建程序文件,代码如下:

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",  # Ollama默认API地址
    api_key="test"  # 必填字段但会被忽略,随便填写即可
)

response = client.chat.completions.create(
    model="deepseek-r1:1.5b",  # 替换为已下载的模型名称
    messages=[
        {"role": "system", "content": "你是一个有帮助的助手"},
        {"role": "user", "content": "用50字解释量子计算"}
    ],
    temperature=0.7,
    max_tokens=1024
)

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

其中,替换如下信息为你自己的:

base_url:换成你自己ollama的地址,地址后面的“/v1”不能去掉,这是ollama的API地址

model:你自己本地安装的模型,可以在终端通过命令“ollama list ”查看:

messages:是要提问的角色和内容

执行界面如下:

第二种方式:requests

requests 是 Python 中一个简单易用的 HTTP 请求库,用于向网络服务器或 API 发送 HTTP 请求(如 GET、POST、PUT、DELETE 等),并处理响应数据。它简化了与 Web 服务交互的流程,广泛应用于数据爬取、API 调用、自动化测试等场景。

 可见,其实就是用通用的网络访问方式,来访问ollama,返回响应信息,创建程序文件,代码如下:

import requests
 
# Ollama 服务器的 URL
#url = "http://localhost:11434/v1/chat/completions"  #ok
url="http://localhost:11434/api/chat"       

'''
直接访问API端点
        (1)模型列表:GET http://localhost:11434/api/tags

        (2)生成文本:POST http://localhost:11434/api/generate

        (3)对话交互:POST http://localhost:11434/api/chat

        (4)拉取模型:POST http://localhost:11434/api/pull

''' 
# 设置你的请求头(通常需要设置 Content-Type)
headers = {
    "Content-Type": "application/json"
}
 
# 构建请求体,例如,你想让模型生成一些文本
data = {
    "messages": [{'role': 'user', 'content': '你是谁?'}],
    "model": "deepseek-r1:1.5b",  # 你想要使用的模型,例如 Mistral-7B-Instruct-v0.1
    "stream": False,
    "temperature": 0.01,  # 控制随机性,可选参数
    "max_tokens": 256  # 生成的最大 token 数,可选参数
}
 
# 发送 POST 请求
response = requests.post(url, json=data, headers=headers)
 
# 检查响应状态码
if response.status_code == 200:
    # 解析响应内容
    result = response.json()
    #print(result)
    print("Generated Text:", result.get("message").get("content"))  # 打印生成的文本
else:
    print("Error:", response.status_code, response.text)

如果提示request找不到,则通过下面命令进行安装

pip install requests

 执行界面:

方式三:ollama API

Ollama 是一个本地化的机器学习框架,专注于模型加载、推理和生成任务。它提供了强大的 API 接口,允许开发者通过 HTTP 请求与模型进行交互,实现文本生成、对话管理等功能。

首先需要安装ollama包,执行下面命令:

pip install ollama

 如果这过程出错,请参考之前发布的文档:

【菜鸟飞】在vsCode中安装python的ollama包出错的问题-CSDN博客

安装好包,创建程序文件,我测试,有两种调用方式,/api/chat 和 /api/generate : 

  • /api/generate

用途: 这个端点主要用于生成单个文本片段。它接收输入并返回基于该输入的模型生成的文本,通常不考虑之前的消息历史或对话上下文。

功能: 它可以用于各种生成任务,如文章创作、代码生成、故事编写等,其中每次请求都是独立的,不依赖于前一次请求的结果。 

  • /api/chat

用途: 这个端点用于支持对话式的交互。它通常需要一个消息列表作为输入,以维护对话的历史和上下文,确保模型能够理解并响应连续的对话。

功能: 它适合于创建聊天机器人、问答系统或任何需要多轮对话的应用场景。通过跟踪对话历史,模型可以提供更加连贯和情境相关的响应。

 总结而言,/api/generate 更适合一次性生成任务,而 /api/chat 更适合需要持续对话和上下文记忆的任务。

generate方式: 

generate方式,代码如下:

import ollama

client = ollama.Client(host='http://localhost:11434')
print('----------')
models = client.list()
print('Available models:', models)

print('----------')
response = client.generate(
model="deepseek-r1:1.5b", # 指定模型名称
prompt='你是谁'
)
print(response['response'])

执行界面:

错误参考:

我通过网络学习,别人的代码是这样,不用指定ollama地址,用默认地址直接访问,但我执行总是报服务器找不到的错误:

    raise ConnectionError(CONNECTION_ERROR_MESSAGE) from None
ConnectionError: Failed to connect to Ollama. Please check that Ollama is downloaded, running and accessible. https://ollama.com/download

检查了ollama的访问环境变量,和防火墙,多没解决,下面界面供参考,大家可以自己试一下:

chat方式:

chat访问,代码如下:

from ollama import Client

client = Client(
    host='http://localhost:11434',
    headers={'x-some-header': 'some-value'}
)

stream = client.chat(
    model='deepseek-r1:1.5b',
    messages=[{'role': 'user', 'content': '你是谁?'}],
    #stream=False,
    stream=True,
)

#print(stream)
'''
print('--------stream=False-----') 
print(stream['message']['content'])
print('-------stream=False------')
'''
print('-------stream=true------')
for chunk in stream:
    print(chunk['message']['content'], end='', flush=True)
print('-------stream=true------\n')

上面打印是,stream不同方式,对应的不同打印方式,执行界面参考:

错误参考

和上面类似,大家可以测试一下直接用chat取代,client.chat试一下。

参考文档

  • OpenAI参考文档

介绍 | Open API中文文档

  • ollama的AIP参考文档

Ollama 简介 | 菜鸟教程

官方文档:ollama/docs/api.md at main · ollama/ollama · GitHub

国内镜像文档:ollama/docs/api.md at main · ollama/ollama · GitHub