Ollama Python 使用小結(jié)
Ollama 提供了 Python SDK,可以讓開發(fā)者能夠在 Python 環(huán)境中與本地運(yùn)行的模型進(jìn)行交互。
通過(guò) Ollama 的 Python SDK 能夠輕松地將自然語(yǔ)言處理任務(wù)集成到 Python 項(xiàng)目中,執(zhí)行各種操作,如文本生成、對(duì)話生成、模型管理等,且不需要手動(dòng)調(diào)用命令行。
安裝 Python SDK
首先需要安裝 Ollama 的 Python SDK。
可以使用 pip 安裝:
pip install ollama
確保環(huán)境中已安裝了 Python 3.x,并且網(wǎng)絡(luò)環(huán)境能夠訪問(wèn) Ollama 本地服務(wù)。
啟動(dòng)本地服務(wù)
在使用 Python SDK 之前,確保 Ollama 本地服務(wù)已經(jīng)啟動(dòng)。
可以使用命令行工具來(lái)啟動(dòng)它:
ollama serve
啟動(dòng)本地服務(wù)后,Python SDK 會(huì)與本地服務(wù)進(jìn)行通信,執(zhí)行模型推理等任務(wù)。
使用 Ollama 的 Python SDK 進(jìn)行推理
安裝了 SDK 并啟動(dòng)了本地服務(wù)后,就可以通過(guò) Python 代碼與 Ollama 進(jìn)行交互。
首先,從 ollama 庫(kù)中導(dǎo)入 chat 和 ChatResponse:
from ollama import chat from ollama import ChatResponse
通過(guò) Python SDK,可以向指定的模型發(fā)送請(qǐng)求,生成文本或?qū)υ挘?/p>
from ollama import chat from ollama import ChatResponse response: ChatResponse = chat(model='deepseek-coder', messages=[ { 'role': 'user', 'content': '你是誰(shuí)?', }, ]) # 打印響應(yīng)內(nèi)容 print(response['message']['content']) # 或者直接訪問(wèn)響應(yīng)對(duì)象的字段 #print(response.message.content)
執(zhí)行以上代碼,輸出結(jié)果為:
我是由中國(guó)的深度求索(DeepSeek)公司開發(fā)的編程智能助手,名為DeepCoder。我可以幫助你解答與計(jì)算機(jī)科學(xué)相關(guān)的問(wèn)題和任務(wù)。如果你有任何關(guān)于這方面的話題或者需要在某個(gè)領(lǐng)域進(jìn)行學(xué)習(xí)或查詢信息時(shí)請(qǐng)隨時(shí)提問(wèn)!
llama SDK 還支持流式響應(yīng),開發(fā)者可以在發(fā)送請(qǐng)求時(shí)通過(guò)設(shè)置 stream=True 來(lái)啟用響應(yīng)流式傳輸。
from ollama import chat stream = chat( model='deepseek-coder', messages=[{'role': 'user', 'content': '你是誰(shuí)?'}], stream=True, ) # 逐塊打印響應(yīng)內(nèi)容 for chunk in stream: print(chunk['message']['content'], end='', flush=True)
自定義客戶端
開發(fā)者還可以創(chuàng)建自定義客戶端,來(lái)進(jìn)一步控制請(qǐng)求配置,比如設(shè)置自定義的 headers 或指定本地服務(wù)的 URL。
創(chuàng)建自定義客戶端
通過(guò) Client,可以自定義請(qǐng)求的設(shè)置(如請(qǐng)求頭、URL 等),并發(fā)送請(qǐng)求。
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': '你是誰(shuí)?', }, ]) print(response['message']['content'])
輸出:
我是由中國(guó)的深度求索(DeepSeek)公司開發(fā)的編程智能助手,名為DeepCoder。我主要用于回答計(jì)算機(jī)科學(xué)相關(guān)的問(wèn)題和幫助解決與這些主題相關(guān)的不太清楚或困難的地方。如果你有任何關(guān)于Python、JavaScript或者其他計(jì)算機(jī)科學(xué)領(lǐng)域的問(wèn)題,歡迎向我提問(wèn)!
異步客戶端
如果開發(fā)者希望異步執(zhí)行請(qǐng)求,可以使用 AsyncClient 類,適用于需要并發(fā)的場(chǎng)景。
import asyncio from ollama import AsyncClient async def chat(): message = {'role': 'user', 'content': '你是誰(shuí)?'} response = await AsyncClient().chat(model='deepseek-coder', messages=[message]) print(response['message']['content']) asyncio.run(chat())
輸出:
我是由中國(guó)的深度求索(DeepSeek)公司開發(fā)的編程智能助手,名為"DeepCoder"。我是一個(gè)專門回答計(jì)算機(jī)科學(xué)相關(guān)問(wèn)題的AI模型,能夠幫助用戶解答關(guān)于機(jī)器學(xué)習(xí)、人工智能等領(lǐng)域的問(wèn)題。對(duì)于其他非技術(shù)性問(wèn)題或請(qǐng)求,例如情感分析或者日常對(duì)話類的需求,我是無(wú)法提供服務(wù)的。
異步客戶端支持與傳統(tǒng)的同步請(qǐng)求一樣的功能,唯一的區(qū)別是請(qǐng)求是異步執(zhí)行的,可以提高性能,尤其是在高并發(fā)場(chǎng)景下。
異步流式響應(yīng)
如果開發(fā)者需要異步地處理流式響應(yīng),可以通過(guò)將 stream=True 設(shè)置為異步生成器來(lái)實(shí)現(xiàn)。
import asyncio from ollama import AsyncClient async def chat(): message = {'role': 'user', 'content': '你是誰(shuí)?'} 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)將逐部分地異步返回,每部分都可以即時(shí)處理。
常用 API 方法
Ollama Python SDK 提供了一些常用的 API 方法,用于操作和管理模型。
1. chat 方法
與模型進(jìn)行對(duì)話生成,發(fā)送用戶消息并獲取模型響應(yīng):
ollama.chat(model='llama3.2', messages=[{'role': 'user', 'content': 'Why is the sky blue?'}])
2. generate 方法
用于文本生成任務(wù)。與 chat 方法類似,但是它只需要一個(gè) prompt 參數(shù):
ollama.generate(model='llama3.2', prompt='Why is the sky blue?')
3. list 方法
列出所有可用的模型:
ollama.list()
4. show 方法
顯示指定模型的詳細(xì)信息:
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ù)制模型到另一個(gè)位置:
ollama.copy('llama3.2', 'user/llama3.2')
7. delete 方法
刪除指定模型:
ollama.delete('llama3.2')
8. pull 方法
從遠(yuǎn)程倉(cāng)庫(kù)拉取模型:
ollama.pull('llama3.2')
9. push 方法
將本地模型推送到遠(yuǎn)程倉(cāng)庫(kù):
ollama.push('user/llama3.2')
10. embed 方法
生成文本嵌入:
ollama.embed(model='llama3.2', input='The sky is blue because of rayleigh scattering')
11. ps 方法
查看正在運(yùn)行的模型列表:
ollama.ps()
錯(cuò)誤處理
Ollama SDK 會(huì)在請(qǐng)求失敗或響應(yīng)流式傳輸出現(xiàn)問(wèn)題時(shí)拋出錯(cuò)誤。
開發(fā)者可以使用 try-except 語(yǔ)句來(lái)捕獲這些錯(cuò)誤,并根據(jù)需要進(jìn)行處理。
案例
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 錯(cuò)誤,捕獲后開發(fā)者可以選擇拉取該模型或進(jìn)行其他處理。
到此這篇關(guān)于Ollama Python 使用小結(jié)的文章就介紹到這了,更多相關(guān)Ollama Python 使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python爬蟲 貓眼電影和電影天堂數(shù)據(jù)csv和mysql存儲(chǔ)過(guò)程解析
這篇文章主要介紹了python爬蟲 貓眼電影和電影天堂數(shù)據(jù)csv和mysql存儲(chǔ)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09python3爬蟲獲取html內(nèi)容及各屬性值的方法
今天小編就為大家分享一篇python3爬蟲獲取html內(nèi)容及各屬性值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12python讀取raw binary圖片并提取統(tǒng)計(jì)信息的實(shí)例
今天小編就為大家分享一篇python讀取raw binary圖片并提取統(tǒng)計(jì)信息的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01