Ollama Python 使用小結(jié)
Ollama 提供了 Python SDK,可以讓開發(fā)者能夠在 Python 環(huán)境中與本地運行的模型進行交互。
通過 Ollama 的 Python SDK 能夠輕松地將自然語言處理任務(wù)集成到 Python 項目中,執(zhí)行各種操作,如文本生成、對話生成、模型管理等,且不需要手動調(diào)用命令行。
安裝 Python SDK
首先需要安裝 Ollama 的 Python SDK。
可以使用 pip 安裝:
pip install ollama
確保環(huán)境中已安裝了 Python 3.x,并且網(wǎng)絡(luò)環(huán)境能夠訪問 Ollama 本地服務(wù)。
啟動本地服務(wù)
在使用 Python SDK 之前,確保 Ollama 本地服務(wù)已經(jīng)啟動。
可以使用命令行工具來啟動它:
ollama serve
啟動本地服務(wù)后,Python SDK 會與本地服務(wù)進行通信,執(zhí)行模型推理等任務(wù)。
使用 Ollama 的 Python SDK 進行推理
安裝了 SDK 并啟動了本地服務(wù)后,就可以通過 Python 代碼與 Ollama 進行交互。
首先,從 ollama 庫中導(dǎo)入 chat 和 ChatResponse:
from ollama import chat from ollama import ChatResponse
通過 Python SDK,可以向指定的模型發(fā)送請求,生成文本或?qū)υ挘?/p>
from ollama import chat
from ollama import ChatResponse
response: ChatResponse = chat(model='deepseek-coder', messages=[
{
'role': 'user',
'content': '你是誰?',
},
])
# 打印響應(yīng)內(nèi)容
print(response['message']['content'])
# 或者直接訪問響應(yīng)對象的字段
#print(response.message.content)執(zhí)行以上代碼,輸出結(jié)果為:
我是由中國的深度求索(DeepSeek)公司開發(fā)的編程智能助手,名為DeepCoder。我可以幫助你解答與計算機科學(xué)相關(guān)的問題和任務(wù)。如果你有任何關(guān)于這方面的話題或者需要在某個領(lǐng)域進行學(xué)習(xí)或查詢信息時請隨時提問!
llama SDK 還支持流式響應(yīng),開發(fā)者可以在發(fā)送請求時通過設(shè)置 stream=True 來啟用響應(yīng)流式傳輸。
from ollama import chat
stream = chat(
model='deepseek-coder',
messages=[{'role': 'user', 'content': '你是誰?'}],
stream=True,
)
# 逐塊打印響應(yīng)內(nèi)容
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)自定義客戶端
開發(fā)者還可以創(chuàng)建自定義客戶端,來進一步控制請求配置,比如設(shè)置自定義的 headers 或指定本地服務(wù)的 URL。
創(chuàng)建自定義客戶端
通過 Client,可以自定義請求的設(shè)置(如請求頭、URL 等),并發(fā)送請求。
from ollama import Client
client = Client(
host='http://localhost:11434',
headers={'x-some-header': 'some-value'}
)
response = client.chat(model='deepseek-coder', messages=[
{
'role': 'user',
'content': '你是誰?',
},
])
print(response['message']['content'])輸出:
我是由中國的深度求索(DeepSeek)公司開發(fā)的編程智能助手,名為DeepCoder。我主要用于回答計算機科學(xué)相關(guān)的問題和幫助解決與這些主題相關(guān)的不太清楚或困難的地方。如果你有任何關(guān)于Python、JavaScript或者其他計算機科學(xué)領(lǐng)域的問題,歡迎向我提問!
異步客戶端
如果開發(fā)者希望異步執(zhí)行請求,可以使用 AsyncClient 類,適用于需要并發(fā)的場景。
import asyncio
from ollama import AsyncClient
async def chat():
message = {'role': 'user', 'content': '你是誰?'}
response = await AsyncClient().chat(model='deepseek-coder', messages=[message])
print(response['message']['content'])
asyncio.run(chat())輸出:
我是由中國的深度求索(DeepSeek)公司開發(fā)的編程智能助手,名為"DeepCoder"。我是一個專門回答計算機科學(xué)相關(guān)問題的AI模型,能夠幫助用戶解答關(guān)于機器學(xué)習(xí)、人工智能等領(lǐng)域的問題。對于其他非技術(shù)性問題或請求,例如情感分析或者日常對話類的需求,我是無法提供服務(wù)的。
異步客戶端支持與傳統(tǒng)的同步請求一樣的功能,唯一的區(qū)別是請求是異步執(zhí)行的,可以提高性能,尤其是在高并發(fā)場景下。
異步流式響應(yīng)
如果開發(fā)者需要異步地處理流式響應(yīng),可以通過將 stream=True 設(shè)置為異步生成器來實現(xiàn)。
import asyncio
from ollama import AsyncClient
async def chat():
message = {'role': 'user', 'content': '你是誰?'}
async for part in await AsyncClient().chat(model='deepseek-coder', messages=[message], stream=True):
print(part['message']['content'], end='', flush=True)
asyncio.run(chat())響應(yīng)將逐部分地異步返回,每部分都可以即時處理。
常用 API 方法
Ollama Python SDK 提供了一些常用的 API 方法,用于操作和管理模型。
1. chat 方法
與模型進行對話生成,發(fā)送用戶消息并獲取模型響應(yīng):
ollama.chat(model='llama3.2', messages=[{'role': 'user', 'content': 'Why is the sky blue?'}])2. generate 方法
用于文本生成任務(wù)。與 chat 方法類似,但是它只需要一個 prompt 參數(shù):
ollama.generate(model='llama3.2', prompt='Why is the sky blue?')
3. list 方法
列出所有可用的模型:
ollama.list()
4. show 方法
顯示指定模型的詳細信息:
ollama.show('llama3.2')5. create 方法
從現(xiàn)有模型創(chuàng)建新的模型:
ollama.create(model='example', from_='llama3.2', system="You are Mario from Super Mario Bros.")
6. copy 方法
復(fù)制模型到另一個位置:
ollama.copy('llama3.2', 'user/llama3.2')7. delete 方法
刪除指定模型:
ollama.delete('llama3.2')8. pull 方法
從遠程倉庫拉取模型:
ollama.pull('llama3.2')9. push 方法
將本地模型推送到遠程倉庫:
ollama.push('user/llama3.2')10. embed 方法
生成文本嵌入:
ollama.embed(model='llama3.2', input='The sky is blue because of rayleigh scattering')
11. ps 方法
查看正在運行的模型列表:
ollama.ps()
錯誤處理
Ollama SDK 會在請求失敗或響應(yīng)流式傳輸出現(xiàn)問題時拋出錯誤。
開發(fā)者可以使用 try-except 語句來捕獲這些錯誤,并根據(jù)需要進行處理。
案例
model = 'does-not-yet-exist'
try:
response = ollama.chat(model)
except ollama.ResponseError as e:
print('Error:', e.error)
if e.status_code == 404:
ollama.pull(model)在上述例子中,如果模型 does-not-yet-exist 不存在,拋出 ResponseError 錯誤,捕獲后開發(fā)者可以選擇拉取該模型或進行其他處理。
到此這篇關(guān)于Ollama Python 使用小結(jié)的文章就介紹到這了,更多相關(guān)Ollama Python 使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python3實現(xiàn)轉(zhuǎn)換Image圖片格式
本篇文章給大家分享了Python3實現(xiàn)在線轉(zhuǎn)換Image圖片格式的功能以及相關(guān)實例代碼,有興趣的朋友參考下。2018-06-06
python實現(xiàn)在無須過多援引的情況下創(chuàng)建字典的方法
這篇文章主要介紹了python實現(xiàn)在無須過多援引的情況下創(chuàng)建字典的方法,是非常實用的技巧,需要的朋友可以參考下2014-09-09
python創(chuàng)建虛擬環(huán)境的常用命令與使用
這篇文章主要為大家詳細介紹了python創(chuàng)建虛擬環(huán)境的常用命令與具體使用,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-09-09
Python 解決相對路徑問題:"No such file or directory"
這篇文章主要介紹了Python 解決相對路徑問題:"No such file or directory"具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python備份文件以及mysql數(shù)據(jù)庫的腳本代碼
最近正在學(xué)習(xí)python,看了幾天了,,所以寫個小腳本練習(xí)練習(xí),沒什么含金量,只當練手2013-06-06
使用selenium模擬登錄解決滑塊驗證問題的實現(xiàn)
這篇文章主要介紹了使用selenium模擬登錄解決滑塊驗證問題的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05

