AI入门7:python三种API方式调用本地Ollama+DeepSeek
回顾
书接上篇:各种方式搭建了本地知识库:
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 OpenAIclient = 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 ollamaclient = 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 Clientclient = 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
相关文章:
AI入门7:python三种API方式调用本地Ollama+DeepSeek
回顾 书接上篇:各种方式搭建了本地知识库: AI入门:AI模型管家婆ollama的安装和使用-CSDN博客 AI入门2:本地AI部署,用ollama部署deepseek(私有化部署)-CSDN博客 AI入门3:给本地d…...
SQL SERVER日常运维巡检系列—结构设计
前言 做好日常巡检是数据库管理和维护的重要步骤,而且需要对每次巡检日期、结果进行登记,同时可能需要出一份巡检报告。 本系列旨在解决一些常见的困扰: 不知道巡检哪些东西 不知道怎么样便捷体检 机器太多体检麻烦 生成报告…...
前端剪贴板操作:从传统方法到现代方案
一、传统复制实现原理 这个copy函数展示了经典的剪贴板操作方案: function copy(color) {const input document.createElement("input");input.value color;document.body.appendChild(input);input.select();document.execCommand("copy")…...
E1-数组的平衡点2(前缀和)
题目描述 给定一个长度为 n 的数组 nums,若其中存在某个位置 index,使得 [0, index - 1] 范围的元素之积 等于 [index 1, n - 1] 范围的元素之积,则称 index 位置是数组 nums 的平衡点。 请你找出数组 nums 的平衡点位置,若存在…...
【Maven-plugin】有多少官方插件?
之前疏理了容器底层原理,现在回归主题,在阅读 next-public时发现 parent 将从多基础插件集成到 parent 仓库中单独维护,数量众多,故在此将所有插件分类整理。以达观其全貌,心中有数。 以下是 Apache Maven 官方维护的核心插件列表…...
10-BST(二叉树)-建立二叉搜索树,并进行前中后遍历
题目 来源 3540. 二叉搜索树 - AcWing题库 思路 建立二叉搜索树(注意传参时用到了引用,可以直接对root进行修改),同时进行递归遍历;遍历可以分前中后三种写,也可以用标志来代替合在一起。其余详见代码。…...
企业培训APP如何迈向AI时代?智能化在线教育系统源码开发解析
2025年,AI驱动的企业培训系统将成为主流,企业可以借助智能化在线教育系统源码构建高效的培训体系,提高员工学习效率,优化培训成本。本文将详细解析AI如何赋能企业培训,并探讨智能化在线教育系统源码的关键技术与开发实…...
CXSMILES介绍
Chemaxon 扩展 SMILES/SMARTS 用于在 SMILES 字符串后存储分子的特殊特征。任何信息都可以存储在 SMILES 字符串后,只要它们由空格或制表符字符分隔,因为 SMILES 解析器会忽略这些信息,或者将它们作为注释使用。扩展特征以以下格式存储: SMILES_String |<feature1>,…...
麒麟服务器操作系统Sqlite部署手册
软件简介 SQLite****介绍 SQLite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足、无服务器、零配置的、事务性的SQL数据库引擎。它是一个零配置的数据库,这就体现出来SQLite与其他数据库的最大的区别:SQLite不需要在系统中配置,直接可以使用。…...
【GPT-SoVITS】GPT-SoVITSAPI调用:让二次元角色开口说话,打造专属语音合成系统
介绍 GPT-SoVITS 是一个强大的语音合成系统,它结合了 GPT(生成式预训练转换器)和 SoVITS(Soft-VC VITS)两种先进技术: GPT: 负责文本理解和语音生成的控制,能够根据上下文生成自然的语音内容S…...
Deepseek API+Python测试用例一键生成与导出-V1.0.2【实现需求文档图片识别与用例生成自动化】
在测试工作中,需求文档中的图片(如界面设计图、流程图)往往是测试用例生成的重要参考。然而,手动提取图片并识别内容不仅耗时,还容易出错。本文将通过一个自研小工具,结合 PaddleOCR 和大模型,自…...
防火墙双机热备(主备分担)
目录 引言 主备备份实验 1、基本配置 2、双机热备配置 查看双机热备状态 主备切换 路由影响 引言 传统VRRP方式无法实现主、备用防火墙状态信息和多组VRRP状态的一致性,所以可能会导致流量的回包不从首包通过的防火墙回包,防火墙会因为状态检测机…...
记Redis集群挂掉后,尝试重启集群但失败问题
前期尝试解决:将redis集群中所有redis节点都关闭后,又重新启动服务并且试图用命令建立集群通讯,报错[ERR] Node 192.168.75.128:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some…...
c++--vector
1.定义vector vector的定义分为四种 (1)vector() ——————无参构造 (2)vector(size_t n,const value_type& val value_type()) ——————构造并初始化n个val (3)vector(const vector& v1) ———————拷贝构造 (4)vector(inputiterator first,inpu…...
计算机视觉——深入理解卷积神经网络与使用卷积神经网络创建图像分类算法
引言 卷积神经网络(Convolutional Neural Networks,简称 CNNs)是一种深度学习架构,专门用于处理具有网格结构的数据,如图像、视频等。它们在计算机视觉领域取得了巨大成功,成为图像分类、目标检测、图像分…...
c++题目_翻译家
题目描述 grang是一个帅气的翻译家他的任务是把摩斯密码翻译成2进制数,他要上课所以想请你帮他一下,他会给你 一段摩斯密码有“.”和“-”组成让你输出个二进制数。 翻译规则是:不用管-,看每一个.有几个"."组成如果有奇…...
【解析 ECharts 图表样式继承与自定义】
解析 ECharts 图表样式继承与自定义 本文将详细介绍 ECharts 的样式继承机制,从其原理、演进到实际应用场景,并结合实际开发经验分享一些实战技巧,帮助开发者在构建数据可视化页面时实现更统一、灵活的样式管理与高效开发。 一、背景与来龙…...
Python IP解析器 ip2region使用
说明:最近需要在python项目内使用IP定位所在城市的需求,没有采用向外部ISP服务商API请求获取信息的方案,则翻了翻,在搞Java时很多的方案,在Python端反而可选择范围很小。 # 示例查询 ips ["106.38.188.214"…...
Java Stream 流的介绍
介绍 在 Java 8 中,引入了 Stream API,它为处理集合(如 List、Set 等)提供了一种更简洁、声明式的方式。Stream 流的设计目标是支持对数据集合的高效操作,尤其是能够进行链式操作、并行处理等,极大地提升了…...
C++从入门到入土(八)——多态的原理
目录 前言 多态的原理 动态绑定与静态绑定 虚函数表 小结 前言 在前面的文章中,我们介绍了C三大特性之一的多态,我们主要介绍了多态的构成条件,但是对于多态的原理我们探讨的是不够深入的,下面这这一篇文章,我们将…...
BFS,DFS带图详解+蓝桥杯算法题+经典例题
1.BFS和DFS的定义与实现方式 1.1 深度优先搜索(DFS) 基本概念:DFS 是一种用于遍历或搜索图或树的算法。它从起始节点开始,沿着一条路径尽可能深地探索下去,直到无法继续或者达到目标节点,然后回溯到上一个…...
【RHCE实验】搭建主从DNS、WEB等服务器
目录 需求 环境搭建 配置nfs服务器 配置web服务器 配置主从dns服务器 主dns服务器 从dns服务器 配置客户端 客户端测试 需求 客户端通过访问 www.nihao.com 后,能够通过 dns 域名解析,访问到 nginx 服务中由 nfs 共享的首页文件,内容…...
有哪些开源的智慧园区项目?
作为专注于数字孪生技术的开发者团队,我们一直在数字孪生圈分享开源项目。但最近一次与AI助手Deepseek的对话,却让我们“又惊又喜”。 ——当询问“有哪些开源的智慧园区项目”时,Deepseek的回答中竟包含了我们自己的开源项目! 这…...
prometheusalert对阿里云短信服务不适配问题处理
背景 想通过prometheusalert实现阿里云短信告警。结果在配置完altermanager和prometheusalert,以及阿里云短信服务中的各种签名和短信模板之后,在prometheusalert web ui上测试模板时一直报“模板变量JSON格式错误 或 JSON变量属性与模板占位符不一致”…...
NFC 碰一碰发视频源码搭建,支持OEM
一、引言 NFC(Near Field Communication)近场通信技术,以其便捷、快速的数据交互特性,正广泛应用于各个领域。其中,NFC 碰一碰发视频这一应用场景,为用户带来了新颖且高效的视频分享体验。想象一下&#x…...
浅谈鸿蒙跨平台开发框架ArkUI-X
之前写过使用uniapp的跨平台开发鸿蒙项目,今天分享一下开发体验更友好的跨平台开发框架ArkUI-X。 ArkUI-X看起来像是鸿蒙官方的框架,在DevEco中就可以安装和使用,而且会ArkUI就可以开发安卓和、iOS和鸿蒙三个平台的app,下面简单介…...
LLVM学习-- 构建和安装
一 LLVM版本 二 适用预构建的二进制文件安装LLVM 三 适用包管理器安装LLVM 四 从源码构建用于Linux的LLVM 五 从源码构建用于Windows和Visual Studio的LLVM 六 从源码构建用于MacOS 和XCode的LLVM 1.1 LLVM项目从10年前第一次发布到版本3.4,其SVN存储库包含了超过20…...
总结Solidity 的数据类型
数据类型 在 Solidity 中,类型系统非常丰富,主要分为 值类型(Value Types)和 引用类型(Reference Types)。此外,还有一些特殊类型和全局变量。 一.值类型 布尔型(bool)…...
C# 中泛型(Generics)的核心概念
在 C# 中,泛型(Generics) 是一种强大的编程特性,允许你编写可重用、类型安全的代码,而无需为不同类型重复编写相似的逻辑。泛型的核心思想是参数化类型,即通过占位符(如 T)表…...
ubuntu 根据src 包从新打包
下边以onnxruntime示例: 1. 安装必要的依赖 确保你的系统已安装 devscripts、dpkg-dev 和 build-essential: sudo apt update sudo apt install devscripts dpkg-dev build-essential equivs2. 解压源码 进入存放源码包的目录,并解压: #c…...
如何启用 HTTPS 并配置免费的 SSL 证书
引言 HTTPS 已成为现代网站安全性的基础要求。通过 SSL/TLS 证书对数据进行加密,不仅可以保护用户隐私,还能提升搜索引擎排名并增强用户信任。本指南将详细介绍如何通过 Lets Encrypt(免费、自动化的证书颁发机构)为您的网站启用…...
Python数据与变量、进制转换、输入输出函数、基本运算,基础语法编程练习
第一节 数据与变量 程序 数据 指令 1.1 内置基本数据类型 (1)数值型 整数(int):用于表示整数,注意一点Python中int数据可以存储任意大小整数,不会像其他语言(C\C Java࿰…...
联邦学习(Federated Learning)
1. 概念 联邦学习(Federated Learning, FL)是一种分布式机器学习技术,它允许多个参与方(如设备、机构或企业)在不共享原始数据的情况下协同训练机器学习模型。联邦学习通过本地计算模型参数聚合的方式,保护…...
AI大模型核心原理(二)
一、人工智能的兴起。 1、前序。 艾伦麦席森图灵; 是计算机科学之父。 著名英国数学家、计算机科学家、逻辑学家和密码分析学家,被誉为计算机科学与人工智能之父。 阿兰・图灵(Alan Turing) 是译名(简称)…...
数据结构篇——线索二叉树
一、引入 遍历二叉树是按一定规则将二叉树结点排成线性序列,得到先序、中序或后序序列,本质是对非线性结构线性化,使结点(除首尾)在线性序列中有唯一前驱和后继;但以二叉链表作存储结构时,只能获…...
【蓝桥杯】742合唱队形(DP LIS)
思路 借这题复习一下LIS,实际上是LIS的升级版,求一个\/形或者/\行,用两次最长上升子串即可。 先从前往后求递增,再从后往前求递减。 先把满足要求的最长队形求出来,总人数减去队形人数就是要出列的数目。 code impo…...
MySQL二进制日志格式有哪几种
目录 一、二进制日志格式类型1. **STATEMENT 格式(SBR: Statement-Based Replication)**2. **ROW 格式(RBR: Row-Based Replication)**3. **MIXED 格式(混合模式)**二、二进制日志事件详解三、如何选择二进制日志格式?四、配置与查看二进制日志格式五、注意事项在 MySQL…...
VUE管理后台开发-vue-element-admin
# 克隆项目 git clone https://github.com/PanJiaChen/vue-element-admin.git # 进入项目目录 cd vue-element-admin # 安装依赖 npm install # 速度过慢可以使用下面方法进行指定下载镜像原 # 也可以使用nrm选择下载镜像原 # 建议不要用 cnpm 安装 会有各种诡异的bug 可以通…...
计算机网络原理
网络发展史 起初,计算机之间是相互独立的,分别完成不同的工作,效率较为低下.随着时代的发展,计算机开始协同完成任务,就有了网络互连.网络互连是指将多台计算机连接在一起,完成数据共享.根据网络互联的规模不同,可以划分为局域网和广域网.局域网,简称LAN.局域网内的主机可以互相…...
速盾:如何利用CDN静态加速匹配尾缀提升网站性能?
在当前数字化时代,网站性能对于用户体验至关重要。尤其是对于包含大量静态资源(如图片、CSS、JavaScript文件等)的网站来说,如何高效地管理和加速这些资源成为了一个重要课题。本文将介绍如何利用CDN静态加速匹配尾缀的方法来提升…...
【H2O2 | 软件开发】前端深拷贝的实现
目录 前言 开篇语 准备工作 正文 概述 JSON方法 递归 其他 结束语 前言 开篇语 本系列为短篇,每次讲述少量知识点,无需一次性灌输太多的新知识点。该主题文章主要是围绕前端、全栈开发相关面试常见问题撰写的,希望对诸位有所帮助。…...
C#语法基础总结
输入和输出 输入 Console.Read(); 从屏幕读取一个字符,并返回该字符所对应的整型数字 Console.ReadLine(); 从屏幕读取一串字符,并返回该字符串 输出 Console.WriteLine(); 输出内容,并换行 Console.Write(); 输出内容,不换行…...
《深度学习》—— 模型部署
文章目录 模型部署模型准备选择部署平台部署配置与服务化测试与验证优化与维护常用工具与框架Flask本地部署模型 模型部署 模型部署是将训练好的机器学习或深度学习模型投入实际生产环境,使其能够处理实时数据并提供预测或推理服务的过程。 模型准备 模型格式转换…...
E902基于bash与VCS的仿真环境建立
网上看见很多E902仿真的文章,但用到的编译器是类似于这种Xuantie-900-gcc-elf-newlib-x86_64-V3.0.1-20241120,而我按照相应的步骤与对应的编译器,仿真总会报错。后面将编译器换成riscv64-elf-x86_64-20210512,反而成功了。现在开…...
挖矿------获取以太坊测试币
文章目录 挖矿------获取以太坊测试币通过水龙头获取以太坊测试币了解Sepolia是什么?水龙头(Faucet)是什么?Gitcoin Passport是什么? 操作1.MetaMask钱包2.将MetaMask切换到Sepolia测试网络3.用MetaMask连接Gitcoin Pa…...
MySQL事务详解:从理论到实践,保障数据一致性
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、为什么需要事务?二、事务的四大特性(ACID)三、MySQL事务的使用方法1. 基本语法2. 自动提交的设置3. 保存点(…...
在家用台式机上部署 DeepSeek-R1:低成本高性能的 CPU 推理方案---不到 4 万元
近年来,随着大模型技术的飞速发展,开源模型如 DeepSeek-R1 的出现为技术爱好者提供了更多探索人工智能的机会。然而,这类模型动辄数百亿参数,传统意义上需要昂贵的 GPU 集群才能运行,让许多个人开发者望而却步。最近,腾讯玄武实验室基于 CPU 的硬件方案优化,成功将 Deep…...
神经网络量化3-全连接层实现量化
本节,我们模拟下全连接层实现量化,原理上为了方便计算,全连接矩阵采用动态量化的方法,而输入由于不断在变化,我们采用静态量化的方法,直接给出代码: import torch import numpy as np import m…...
12 File文件对象:创建、获取基本信息、遍历文件夹、查找文件;字符集的编解码 (黑马Java视频笔记)
文章目录 File >> 存储数据的方案1. 认识File2. File操作2.1 创建File对象2.2 File操作1)对文件对象的信息的操作2)文件/文件夹的创建/删除3)⭐⭐对文件夹的遍历 3. 方法递归3.1 认识递归3.2 递归算法及其执行流程1) 案例:2…...
【软件工程】03_软件需求分析
3.1 系统分析 1. 系统分析概述 系统分析是一组统称为计算机系统工程的活动。它着眼于所有的系统元素,而非仅仅局限于软件。系统分析主要探索软件项目的目标、市场预期、主要的技术指标等,其目的在于帮助决策者做出是否进行软件项目立项的决定。 2. 可行性分析(Feasibility …...