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

news2025/4/15 15:11:30

回顾 

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

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试一下。

其他:

【vs插件】vsCode环境下,调试ollama的工具allama_gui-CSDN博客

参考文档

  • OpenAI参考文档

介绍 | Open API中文文档

  • ollama的AIP参考文档

Ollama 简介 | 菜鸟教程

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2318459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《线程池:Linux平台编译线程池动态库发生的死锁问题》

关于如何编译动态库可以移步《Linux:动态库动态链接与静态库静态链接》-CSDN博客 我们写的线程池代码是闭源的,未来想提供给别人使用,只需要提供so库和头文件即可。 系统默认库文件路径为: usr/lib usr/loacl/lib 系统默认头文件…

Python Bug修复案例分析:Python 中常见的 IndentationError 错误 bug 的修复

在 Python 编程的世界里,代码的可读性和规范性至关重要。Python 通过强制使用缩进来表示代码块的层次结构,这一独特的设计理念使得代码更加清晰易读。然而,正是这种对缩进的严格要求,导致开发者在编写代码时,稍有不慎就…

OpenCV旋转估计(1)用于估计图像间仿射变换关系的类cv::detail::AffineBasedEstimator

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 基于仿射变换的估计器。 这种估计器使用匹配器估算的成对变换来为每个相机估算最终的变换。 cv::detail::AffineBasedEstimator 是 OpenCV 库中…

c++类和对象(下篇)下

下面就来补充一下c雷和对象最后一点内容. 首先先补充一下上一篇博客上c类和对象(下篇)上-CSDN博客最后学习的静态成员变量的小练习求123...n_牛客题霸_牛客网 (nowcoder.com)下面就是题解.灵活的运用了静态成员变量不销毁的特点,建立数组利用构造函数来完成n次相加. class A{ …

使用WebDAV将文件传输到实时(RT)目标 转发

如何配置Web分布式创作和版本控制(WebDAV)服务器并使用它来与我的实时(RT)目标之间传输文件? 在目标上安装 WebDAV 和 SSL 支持 NI Linux Real-Time 您无需完成任何安装 WebDAV 和 SSL 支持的步骤。默认情况下,这些组件在NI Linu…

Web爬虫利器FireCrawl:全方位助力AI训练与高效数据抓取

Web爬虫利器FireCrawl:全方位助力AI训练与高效数据抓取 一、FireCrawl 项目简介二、主要功能三、FireCrawl应用场景1. 大语言模型训练2. 检索增强生成(RAG):3. 数据驱动的开发项目4. SEO 与内容优化5. 在线服务与工具集成 四、安装…

如何避免PRD(需求文档)成为“沟通黑洞”

在撰写PRD(需求文档)时,要避免成为“沟通黑洞”,必须聚焦目标清晰、需求拆解、协同评审、持续迭代等关键点。其中,协同评审尤其重要——通过在文档完成初期就邀请相关部门共同审阅讨论,可以及早发现需求逻辑…

巧用符号链接搬移C盘中的软件数据目录到其他盘

#工作记录 我们知道,在Windows11系统,有些软件是不能指定安装目录的,有些软件即使指定了安装目录可是在更新版本之后还是会安装到默认的C盘目录中(比如剪映),而且每次安装某些软件之后,这些软件…

使用 PIC 微控制器和 Adafruit IO 的基于 IoT 的 Web 控制家庭自动化

使用 PIC 微控制器和 Adafruit IO 的基于 IoT 的 Web 控制家庭自动化 家庭自动化一直是我们大多数人的灵感来源。从我们舒适的椅子或任何房间的床上切换交流负载,而无需伸手去触碰另一个房间的开关,听起来很酷,不是吗!.现在,在物联网时代,多亏了 ESP8266 模块,它使从世界…

【Java篇】一气化三清:类的实例化与封装的智慧之道

文章目录 类和对象(中)五、对象的构造及初始化5.1 如何初始化对象5.2 构造方法5.2.1 构造方法的概念5.2.2 构造方法的特性 5.3 默认初始化5.4 就地初始化 六、封装6.1 封装的概念6.2 访问限定符6.3 封装扩展之包6.3.1 包的概念6.3.3导入包6.3.3全类名6.3…

VMware上调整centos终端的背景颜色

目录 1. 正常打开一个终端,背景颜色默认为白色 2. 在打开的终端页面上右击,选择“配置文件首选项” 3. 取消默认勾选的 “使用系统主题中的颜色” 即可 1. 正常打开一个终端,背景颜色默认为白色 2. 在打开的终端页面上右击,选择…

Latex2024安装教程(附安装包)Latex2024详细图文安装教程

文章目录 前言一、Latex2024下载二、Texlive 2024安装教程1.准备安装文件2.启动安装程序3.配置安装选项4.开始安装5.安装完成6.TeX Live 2024 安装后确认 三、Texstudio 安装教程1.准备 Texstudio 安装2.启动 Texstudio 安装向导3.选择安装位置4.等待安装完成5.启动 Texstudio6…

用了Cline和华为云的大模型,再也回不去了

这两年AI火热,受影响最大的还是程序员群体,因为编程语言是高度形式化的,完全可以用BNF等形式精确地定义,不像自然语言那样,容易出现歧义。另外开源是软件界的潮流,GitHub上有海量的开源代码可供AI来训练&am…

详细解析格式化消息框的代码

书籍:《windows程序设计(第五版)》的开始 环境:visual studio 2022 内容:格式化消息框 说明:以下内容大部分来自腾讯元宝。 封装MessageBoxPrintf 在MessageBoxPrintf()中处理可变参数,通过va_list机制&#xff0c…

Jetson Nano 三个版本(B01 4GB、Orin 4GB、Orin 8GB)本地部署Deepseek等大模型的测评

Jetson Nano三个版本(B01 GB、Orin 4GB、Orin 8GB)本地部署Deepseek等大模型的测评 一、为什么要在终端设备部署大模型?二、 Jetson Nano推理大模型时计算资源占用情况分析为什么测试Jetson Nano?三款Jetson Nano芯片简介 三、大模型推理实验…

mac calDAV 日历交互

安装Bakal docker https://sabre.io/dav/building-a-caldav-client/ 在Bakal服务器上注册账户 http://localhost:8080/admin/?/users/calendars/user/1/ 在日历端登录账户: Server: http://127.0.0.1:8080/dav.php Server Path: /dav.php/principals/lion No e…

数据库监控:确保业务连续性和用户体验

在数字化时代,数据库作为企业的数据心脏,其重要性不言而喻。无论是交易系统、客户关系管理系统,还是数据分析平台,都离不开数据库的支撑。然而,数据库的运行状态和性能直接影响着企业的业务连续性和用户体验。因此&…

PointVLA:将 3D 世界注入视觉-语言-动作模型

25年3月来自美的集团、上海大学和华东师大的论文“PointVLA: Injecting the 3D World into Vision-Language-Action Models”。 视觉-语言-动作 (VLA) 模型利用大规模 2D 视觉语言预训练,在机器人任务方面表现出色,但它们对 RGB 图像的依赖,…

SpringBoot-MVC配置类与 Controller 的扫描

文章目录 前言一、自动配置类位置二、自动配置类解析2.1 WebMvcAutoConfiguration2.1.1 EnableWebMvcConfiguration 2.2 DispatcherServletAutoConfiguration 三、RequestMapping 的扫描过程3.1 RequestMappingHandlerMapping#afterPropertiesSet3.2 RequestMappingHandlerMapp…

企业年度经营计划制定与管理方法论(124页PPT)(文末有下载方式)

资料解读:企业年度经营计划制定与管理方法论 详细资料请看本解读文章的最后内容。 在企业的发展进程中,年度经营计划的制定与管理至关重要,它犹如企业前行的导航图,指引着企业在复杂多变的市场环境中稳健发展。这份《企业年度经营…