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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72837.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72837.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72837.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

內網安全-橫向移動Kerberos 攻擊SPN 掃描WinRMWinRSRDP

1.WinRM&WinRS 條件: 雙方開啟winrm winrs服務 2008版本以上默認開啟,win 7默認關閉 檢測使用cs內置端口掃描5985開放情況 進行連接 winrs -r:http://192.168.93.30:5985 -u:administrator -p:Whoami2021 whoami 2.內網-spn shell setspn -T …

LoRA中黑塞矩陣、Fisher信息矩陣是什么

LoRA中黑塞矩陣、Fisher信息矩陣是什么 1. 三者的核心概念 黑塞矩陣(Hessian) 二階導數矩陣,用于優化問題中判斷函數的凸性(如牛頓法),或計算參數更新方向(如擬牛頓法)。 Fisher信息矩陣(Fisher Information Matrix, FIM) 統計學中衡量參數估計的不確定性,反映數據…

高級java每日一道面試題-2025年3月04日-微服務篇[Eureka篇]-Eureka是什么?

如果有遺漏,評論區告訴我進行補充 面試官: Eureka是什么? 我回答: 在Java高級面試中,關于Eureka的討論通常會涵蓋其基本概念、組件與架構、工作原理、高級特性以及與其他服務發現工具的比較等多個方面。以下是結合提供的內容對Eureka進行的詳細解析和…

YZi Labs 談對 Plume 的投資:利用區塊鏈創造現實價值的典范項目

3 月 17 日,YZi Labs 宣布投資 RWAfi 賽道項目 Plume,引發市場廣泛關注。本輪融資是 Plume 在 去年 5 月和 12 月 連續兩輪融資后的第三輪融資,代表著市場資本市場對于 Plume RWAfi 敘事以及其發展潛力的高度認可。 本次融資不僅提升了市場對…

互功率譜 cpsd

互功率譜(Cross-Power Spectral Density, CPSD)是信號處理中用于描述兩個信號在頻域中相關性的工具。它表示兩個信號在不同頻率下的功率分布及其相位關系,廣泛應用于模態分析、系統辨識和信號匹配等領域。 matlab 實現 MATLAB 提供了 cpsd 函數來計算互功率譜。以下是使用 …

RocketMQ 架構

一、RocketMQ 核心架構概述 ?1. 主要組件 ?Name Server: 集群的「中樞神經」,負責 Topic 元數據管理(如 Topic 分區分布、Broker 節點狀態監控)。 ?Broker: 消息存儲與流轉的核心節點,負責消息的持久化…

單片機學完開發板,如何繼續提升自己的技能?

很多人學完開發板后都會卡在一個尷尬的階段:覺得自己會的東西不少,但又不知道下一步該干啥。會點C語言,能燒錄程序,能點亮LED,玩轉按鍵,搞定串口等等,能用開發板做點小玩意兒,但面對…

olmOCR大模型:支持結構化精準提取復雜PDF文件內容

基于streamlit與olmOCR大模型實現的pdf提取工具 import os import json import subprocess import pandas as pd from pathlib import Path import shutil import time import re import streamlit as st# 創建工作目錄 WORKSPACE_DIR "olmocr_workspace" os.maked…

五模型對比!Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多變量時間序列預測

目錄 預測效果基本介紹程序設計參考資料 預測效果 基本介紹 光伏功率預測!五模型對比!Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多變量時間序列預測(Matlab2023b 多輸入單輸出) 1.程序已經調試好,替換數據集后,僅運…

druid開啟防火墻之后的bug

bug以及解決方案 不允許執行多個語句不允許有注釋部分數據有誤識別,拋出異常,導致原本正常執行的語句被中斷 解決方案 application.yaml中對于druid配置如下: wall:enabled: true # 開啟防火墻config:multi-statement-allow: true # 允許多個…

SQLMesh 系列教程:Airbnb數據分析項目實戰

在本文中,我們將探討如何利用dbt項目的代碼庫來實現一個簡單的SQLMesh項目。本文的基礎是基于Udemy講師為dbt課程創建的示例項目,可以在這個GitHub repo中獲得。這個dbt項目是相對完整的示例,我們將使用它作為模板來演示SQLMesh(下…

單片機寫的小液晶屏驅動+漢字滾屏

單片機寫的小液晶屏驅動漢字滾屏 stm32f401freertos內置HZK16 單片機漢字滾屏

【Golang那些事】go1.22和1.23 更新重點及測評

好久沒有寫文章了,攢了一年的Golang版本特性的技術點以及踩過的坑,那就在新年第一篇的文章中做一個總結吧: 一、關于迭代器 (一)迭代器去掉了共享共享內存 一個經典的面試題 說到Golang經典的面試題,大家可能都刷到過很多&…

python力扣438.找到字符串中所有字母異位詞

給定兩個字符串 s 和 p,找到 s 中所有 p 的 異位詞的子串,返回這些子串的起始索引。不考慮答案輸出的順序。 示例 1: 輸入: s “cbaebabacd”, p “abc” 輸出: [0,6] 解釋: 起始索引等于 0 的子串是 “cba”, 它是"abc" 的異位詞。 起始索引…

【大模型實戰篇】使用GPTQ量化QwQ-32B微調后的推理模型

1. 量化背景 之所以做量化,就是希望在現有的硬件條件下,提升性能。量化能將模型權重從高精度(如FP32)轉換為低精度(如INT8/FP16),內存占用可減少50%~75%。低精度運算(如INT8&#xf…

【MySQL】架構

MySQL架構 和其它數據庫相比,MySQL有點與眾不同,它的架構可以在多種不同場景中應用并發揮良好作用。主要體現在存儲引擎的架構上,插件式的存儲引擎架構將查詢處理和其它的系統任務以及數據的存儲提取相分離。這種架構可以根據業務的需求和實…

JavaScript 金額運算精度丟失問題及解決方案

JavaScript 金額運算精度丟失問題及解決方案 1. 前言2. 為什么 JavaScript 計算金額會精度丟失?2.1 JavaScript 使用 IEEE 754 雙精度浮點數2.2 浮點運算錯誤示例**錯誤示例 1:0.1 0.2 ≠ 0.3****錯誤示例 2:浮點乘法精度問題** 3. 解決方案…

Docker安裝,并pullMySQL和redis

卸載原Docker 您的 Linux 發行版可能提供非官方的 Docker 軟件包,這可能與 Docker 提供的官方軟件包沖突。在安裝 Docker Engine 正式版之前,您必須先卸載這些軟件包。 sudo dnf remove docker \ docker-client \ docker-client-latest \ docker-common…

國內首臺太空采礦機器人亮相,宇宙資源開發邁入新階段

隨著地球資源的日益枯竭,人類將目光投向了浩瀚的宇宙。太空采礦作為一項前沿科技,正逐步從科幻走向現實。近日,中國礦業大學成功研制出國內首臺太空采礦機器人,標志著我國在太空資源開發領域邁出了重要一步。 太空采礦并非新鮮概念…

簡介PyCDE:Python CIRCT Design Entry

簡介PyCDE:Python CIRCT Design Entry 引言 在硬件設計和驗證領域,隨著設計復雜性的增加,傳統的方法往往難以滿足現代設計的需求。PyCDE(Python CIRCT Design Entry)作為CIRCT項目的一部分,旨在為硬件設計…