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

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

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

前言

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

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

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

  • Python: 安裝 Python 3.8 或更高版本。
  • pip: 確保已安裝 pip,Python 的包管理工具。
  • ollama 庫(kù): 用于更方便地與 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)

可以通過(guò)設(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)

    • 直接生成自然語(yǔ)言文本。
    • 適合人類閱讀,但不便于程序解析或自動(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 ,而無(wú)需 NLP 解析普通文本。

(2)提高可控性

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

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

  • 結(jié)構(gòu)化數(shù)據(jù)更適合存儲(chǔ)到數(shù)據(jù)庫(kù)中,方便查詢和分析。
  • 例如:
    {
      "date": "2025-01-20",
      "summary": "今天的銷售額增長(zhǎng)了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)介紹美國(guó)的首都、人口、占地面積信息,并以 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 庫(kù)提供了豐富的接口,簡(jiǎn)化了與 Ollama 的交互。這些接口設(shè)計(jì)直觀,易于集成,旨在幫助開(kāi)發(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 你是大語(yǔ)言模型專家小蜜蜂。
'''

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()

自定義客戶端

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

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

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

所有關(guān)鍵字參數(shù)參見(jiàn)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í)檢測(cè)到錯(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ù),下面來(lái)看看文章的具體內(nèi)容吧,需要的朋友可以參考一下,希望對(duì)你有所幫助
    2021-11-11
  • Python之requests高級(jí)用法詳解

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

    這篇文章主要介紹了Python之requests高級(jí)用法詳解,http協(xié)議是無(wú)狀態(tài)的,?服務(wù)器無(wú)法區(qū)分多個(gè)請(qǐng)求是否來(lái)自同一個(gè)人,因此需要用cookie來(lái)進(jìn)行標(biāo)識(shí),一般如果需要登錄才能訪問(wèn)的網(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)行過(guò)程中產(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ù)到底是什么?接下來(lái)小編給大家分享本文幫助大家學(xué)習(xí)
    2017-10-10
  • windows系統(tǒng)下Boost.Python的配置和使用方法(新手教學(xué))

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

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

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

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

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

    本文主要介紹了numpy.sum()坐標(biāo)軸問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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ì)斑馬線的檢測(cè)示例

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

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

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

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

最新評(píng)論

象山县| 武城县| 同心县| 南木林县| 宾阳县| 万源市| 措勤县| 清涧县| 手机| 滨海县| 阿拉善左旗| 双桥区| 塔城市| 定结县| 三原县| 阳山县| 揭东县| 新河县| 同仁县| 三门峡市| 双峰县| 福建省| 柏乡县| 天长市| 同仁县| 墨玉县| 闸北区| 高雄市| 安陆市| 天镇县| 独山县| 海盐县| 望江县| 新平| 阳高县| 陇川县| 南充市| 栖霞市| 依安县| 佛学| 武隆县|