最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用Ollama API的詳細(xì)代碼示例

 更新時(shí)間:2025年02月15日 11:40:23   作者:goomind  
這篇文章主要介紹了如何在Python中使用OllamaAPI,涵蓋了從環(huán)境準(zhǔn)備、使用方法到高級(jí)功能的全面指南,無論是初學(xué)者還是經(jīng)驗(yàn)豐富的開發(fā)者都能從中受益,需要的朋友可以參考下

前言

本文介紹如何在 Python 中使用 Ollama API。無論你是想進(jìn)行簡單的聊天對(duì)話、使用流式響應(yīng)處理大數(shù)據(jù)、還是希望在本地進(jìn)行模型的創(chuàng)建、復(fù)制、刪除等操作,本文都可以為你提供指導(dǎo)。此外,我們還展示了如何使用自定義客戶端和異步編程來優(yōu)化你的應(yīng)用程序性能,無論你是 Ollama 的新手還是經(jīng)驗(yàn)豐富的開發(fā)者,本文都能幫助你在 Python 中更高效地使用 Ollama API。

環(huán)境準(zhǔn)備

在開始使用 Python 與 Ollama API 交互之前,請(qǐng)確保您的開發(fā)環(huán)境滿足以下條件:

  • Python: 安裝 Python 3.8 或更高版本。
  • pip: 確保已安裝 pip,Python 的包管理工具。
  • ollama 庫: 用于更方便地與 Ollama API 交互。安裝命令如下:
pip install ollama

使用方法

from ollama import chat
from ollama import ChatResponse

response: ChatResponse = chat(model='llama3.1', messages=[
  {
    'role': 'user',
    'content': '為什么天空是藍(lán)色的?',
  },
])
print(response['message']['content'])

print(response.message.content)

流式響應(yīng)

可以通過設(shè)置 stream=True 啟用響應(yīng)流,使函數(shù)調(diào)用返回一個(gè) Python 生成器,其中每個(gè)部分都是流中的一個(gè)對(duì)象。

from ollama import chat

stream = chat(
    model='llama3.1',
    messages=[{'role': 'user', 'content': '為什么天空是藍(lán)色的?'}],
    stream=True,
)

for chunk in stream:
  print(chunk['message']['content'], end='', flush=True)

結(jié)構(gòu)化輸出

  • 普通輸出(Unstructured Output)

    • 直接生成自然語言文本。
    • 適合人類閱讀,但不便于程序解析或自動(dòng)化處理。
    • 例如:
      這是一只黑色的小貓,它正在草地上玩耍。
      
  • 結(jié)構(gòu)化輸出(Structured Output)

    • 以 JSON 、 YAML 、 XML 或其他格式返回?cái)?shù)據(jù),使其更容易被機(jī)器解析和使用。
    • 適合 API 、自動(dòng)化工作流和數(shù)據(jù)存儲(chǔ)。
    • 例如:
      {
        "description": "這是一只黑色的小貓",
        "activity": "正在草地上玩耍"
      }
      

結(jié)構(gòu)化輸出的優(yōu)勢(shì)

(1)便于處理

  • 機(jī)器可以輕松提取特定字段,如 description 或 activity ,而無需 NLP 解析普通文本。

(2)提高可控性

  • 結(jié)構(gòu)化格式讓開發(fā)者可以精確控制模型輸出,避免冗長或不可預(yù)測的回答。
  • 例如,在 AI 生成代碼時(shí):
    {
      "language": "Python",
      "code": "print('Hello, World!')"
    }
    

(3)便于存儲(chǔ)與分析

  • 結(jié)構(gòu)化數(shù)據(jù)更適合存儲(chǔ)到數(shù)據(jù)庫中,方便查詢和分析。
  • 例如:
    {
      "date": "2025-01-20",
      "summary": "今天的銷售額增長了10%。"
    }
    
from pydantic import BaseModel, Field
from ollama import chat
import json

class CountryInfo(BaseModel):
    capital: str = Field(..., alias="首都")
    number: str = Field(..., alias="人口")
    area: str = Field(..., alias="占地面積")  


response = chat(
    model='llama3.1',
    messages=[{
        'role': 'user',
        'content': "請(qǐng)介紹美國的首都、人口、占地面積信息,并以 JSON 格式返回。"
                   
    }],
    format="json",  
    options={'temperature': 0}, 
)

response_content = response["message"]["content"]


if not response_content:
    raise ValueError("Ollama 返回的 JSON 為空")

json_response = json.loads(response_content)  
print(json_response)

friends_response = CountryInfo.model_validate(json_response)  
print(friends_response)

API

Ollama Python 庫提供了豐富的接口,簡化了與 Ollama 的交互。這些接口設(shè)計(jì)直觀,易于集成,旨在幫助開發(fā)者更便捷地調(diào)用和管理模型。如果你想了解更詳細(xì)的底層實(shí)現(xiàn)和完整的 API 端點(diǎn)信息。

聊天

ollama.chat(model='llama3.1', messages=[{'role': 'user', 'content': '為什么天空是藍(lán)色的?'}])

生成

ollama.generate(model='llama3.1', prompt='為什么天空是藍(lán)色的?')

本地模型列表

ollama.list()

顯示模型信息

ollama.show('llama3.1')

創(chuàng)建模型

modelfile='''
FROM llama3.1
SYSTEM 你是大語言模型專家小蜜蜂。
'''

ollama.create(model='example', modelfile=modelfile)

復(fù)制模型

ollama.copy('llama3.1', 'user/llama3.1')

刪除模型

ollama.delete('llama3.1')

拉取模型

ollama.pull('llama3.1')

推送模型

ollama.push('user/llama3.1')

生成嵌入

ollama.embeddings(model='llama3.1', prompt='天空是藍(lán)色的因?yàn)槿鹄⑸?)
# 批量生成embedding
ollama.embed(model='llama3.1', input=['天空是藍(lán)色的', '草是綠色的'])

進(jìn)程

ollama.ps()

自定義客戶端

可以通過通過 ollama 實(shí)例化 Client 或 AsyncClient 來創(chuàng)建自定義客戶端。

可以使用以下字段創(chuàng)建自定義客戶端:

  • host: 要連接的 Ollama 主機(jī)
  • timeout: 請(qǐng)求超時(shí)時(shí)間

所有關(guān)鍵字參數(shù)參見httpx.Client.

from ollama import Client
client = Client(
  host='http://localhost:11434',
  headers={'x-some-header': 'some-value'}
)
response = client.chat(model='llama3.1', messages=[
  {
    'role': 'user',
    'content': '為什么天空是藍(lán)色的?',
  },
])
print(response)

異步客戶端

import asyncio
from ollama import AsyncClient
import nest_asyncio

nest_asyncio.apply()

async def chat():
    message = {'role': 'user', 'content': '為什么天空是藍(lán)色的?'}
    response = await AsyncClient().chat(model='llama3.1', messages=[message])
    print(response)

asyncio.run(chat())

設(shè)置 stream=True 修改函數(shù)以返回 Python 異步生成器:

import asyncio
from ollama import AsyncClient
import nest_asyncio

nest_asyncio.apply()
async def chat():
  message = {'role': 'user', 'content': '為什么天空是藍(lán)色的?'}
  async for part in await AsyncClient().chat(model='llama3.1', messages=[message], stream=True):
    print(part['message']['content'], end='', flush=True)

asyncio.run(chat())

錯(cuò)誤

如果請(qǐng)求返回錯(cuò)誤狀態(tài)或在流式傳輸時(shí)檢測到錯(cuò)誤,則會(huì)引發(fā)錯(cuò)誤。

model = 'does-not-yet-exist'

try:
  ollama.chat(model)
except ollama.ResponseError as e:
  print('錯(cuò)誤:', e.error)
  if e.status_code == 404:
    ollama.pull(model)

總結(jié) 

到此這篇關(guān)于Python使用Ollama API的文章就介紹到這了,更多相關(guān)Python使用Ollama API內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python面向?qū)ο缶幊讨惖姆庋b

    Python面向?qū)ο缶幊讨惖姆庋b

    這篇文章主要介紹了Python面向?qū)ο缶幊讨惖姆庋b封裝指屬性和方法的抽象,屬性的抽象又指對(duì)類的屬性進(jìn)行定義、隔離和保護(hù),下面來看看文章的具體內(nèi)容吧,需要的朋友可以參考一下,希望對(duì)你有所幫助
    2021-11-11
  • Python之requests高級(jí)用法詳解

    Python之requests高級(jí)用法詳解

    這篇文章主要介紹了Python之requests高級(jí)用法詳解,http協(xié)議是無狀態(tài)的,?服務(wù)器無法區(qū)分多個(gè)請(qǐng)求是否來自同一個(gè)人,因此需要用cookie來進(jìn)行標(biāo)識(shí),一般如果需要登錄才能訪問的網(wǎng)站就需要發(fā)送cookie信息,需要的朋友可以參考下
    2023-10-10
  • Python實(shí)現(xiàn)自動(dòng)清理電腦垃圾文件詳解

    Python實(shí)現(xiàn)自動(dòng)清理電腦垃圾文件詳解

    經(jīng)常存在在我們的電腦中的垃圾文件主要是指系統(tǒng)在運(yùn)行過程中產(chǎn)生的tmp臨時(shí)文件、日志文件、臨時(shí)備份文件等。本文將利用Python實(shí)現(xiàn)自動(dòng)清理這些垃圾文件,需要的可以參考一下
    2022-03-03
  • Python中的id()函數(shù)指的什么

    Python中的id()函數(shù)指的什么

    id() 函數(shù)用于獲取對(duì)象的內(nèi)存地址。很多朋友不清楚python中的id函數(shù)到底是什么?接下來小編給大家分享本文幫助大家學(xué)習(xí)
    2017-10-10
  • windows系統(tǒng)下Boost.Python的配置和使用方法(新手教學(xué))

    windows系統(tǒng)下Boost.Python的配置和使用方法(新手教學(xué))

    Boost.Python是Boost庫的一部分,Boost庫本身包含了許多其他有用的庫,這篇文章主要介紹了windows系統(tǒng)下Boost.Python的配置和使用方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-01-01
  • pytest文檔內(nèi)置fixture的request詳情

    pytest文檔內(nèi)置fixture的request詳情

    這篇文章主要介紹了pytest文檔內(nèi)置fixture的request詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • numpy.sum()坐標(biāo)軸問題的解決

    numpy.sum()坐標(biāo)軸問題的解決

    本文主要介紹了numpy.sum()坐標(biāo)軸問題的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • python中的GUI實(shí)現(xiàn)計(jì)算器

    python中的GUI實(shí)現(xiàn)計(jì)算器

    這篇文章主要介紹了如何利用python中的GUI實(shí)現(xiàn)計(jì)算器,文章教大家用用python的GUI做界面布局,計(jì)算器代碼熟悉控件的使用方法、優(yōu)化計(jì)算器代碼,解決獲取按鈕文本的方法,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2021-12-12
  • 基于python的opencv圖像處理實(shí)現(xiàn)對(duì)斑馬線的檢測示例

    基于python的opencv圖像處理實(shí)現(xiàn)對(duì)斑馬線的檢測示例

    這篇文章主要介紹了基于python的opencv圖像處理實(shí)現(xiàn)對(duì)斑馬線的檢測示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 詳解python selenium 爬取網(wǎng)易云音樂歌單名

    詳解python selenium 爬取網(wǎng)易云音樂歌單名

    這篇文章主要介紹了python selenium爬取網(wǎng)易云音樂歌單名,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評(píng)論

巨野县| 东明县| 齐河县| 孙吴县| 疏附县| 白银市| 大渡口区| 伽师县| 江西省| 周至县| 革吉县| 朝阳县| 合肥市| 开平市| 英德市| 山丹县| 舞阳县| 若尔盖县| 兴文县| 绩溪县| 峨山| 东海县| 枣强县| 丘北县| 惠东县| 乃东县| 乡城县| 芜湖市| 当雄县| 二连浩特市| 武强县| 井冈山市| 新竹县| 宣汉县| 肃南| 淄博市| 潼南县| 岐山县| 灵寿县| 黑河市| 莱州市|