在 Python 中使用 Ollama API

在 Python 中使用 Ollama API

在本文中,我们将简单介绍如何在 Python 中使用 Ollama API。无论你是想进行简单的聊天对话、使用流式响应处理大数据、还是希望在本地进行模型的创建、复制、删除等操作,本文都可以为你提供指导。此外,我们还展示了如何使用自定义客户端和异步编程来优化你的应用程序性能,

环境准备

在开始使用 Python 与 Ollama API 交互之前,请确保您的开发环境满足以下条件:

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

    使用方法

    import ollama
    response = ollama.chat(model='llama3.1', messages=[
      {
        'role': 'user',
        'content': '为什么天空是蓝色的?',
      },
    ])
    print(response['message']['content'])
    

    远程调用使用方法

    from ollama import Client as oClient
    oclient = oClient(host='http://192.168.1.100:11434')
    
    response = oclient.chat(model='llama3.1', messages=[
      {
        'role': 'user',
        'content': '为什么天空是蓝色的?',
      },
    ])
    print(response['message']['content'])
    

    流式响应

    可以通过设置 stream=True 启用响应流,使函数调用返回一个 Python 生成器,其中每个部分都是流中的一个对象。

    import ollama
    
    stream = ollama.chat(
        model='llama3.1',
        messages=[{'role': 'user', 'content': '为什么天空是蓝色的?'}],
        stream=True,
    )
    
    for chunk in stream:
      print(chunk['message']['content'], end='', flush=True)
    

    API

    Ollama Python 库提供了丰富的接口,简化了与 Ollama 的交互。这些接口设计直观,易于集成,旨在帮助开发者更便捷地调用和管理模型。如果你想了解更详细的底层实现和完整的 API 端点信息,建议参考 Ollama API 使用指南。

    聊天

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

    生成

    ollama.generate(model='llama3.1', prompt='为什么天空是蓝色的?')
    

    本地模型列表

    ollama.list()
    

    显示模型信息

    ollama.show('llama3.1')
    

    创建模型

    modelfile='''
    FROM llama3.1
    SYSTEM 你是超级马里奥兄弟中的马里奥。
    '''
    
    ollama.create(model='example', modelfile=modelfile)
    

    复制模型

    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='天空是蓝色的因为瑞利散射')
    

    进程

    ollama.ps()
    

    自定义客户端

    可以使用以下字段创建自定义客户端:

  • host: 要连接的 Ollama 主机
  • timeout: 请求超时时间
  • from ollama import Client
    client = Client(host='http://localhost:11434')
    response = client.chat(model='llama3.1', messages=[
      {
        'role': 'user',
        'content': '为什么天空是蓝色的?',
      },
    ])
    

    异步客户端

    import asyncio
    from ollama import AsyncClient
    import nest_asyncio
    
    nest_asyncio.apply()
    
    async def chat():
        message = {'role': 'user', 'content': '为什么天空是蓝色的?'}
        response = await AsyncClient().chat(model='llama3.1', messages=[message])
        print(response)
    
    asyncio.run(chat())
    

    设置 stream=True 修改函数以返回 Python 异步生成器:

    import asyncio
    from ollama import AsyncClient
    import nest_asyncio
    
    nest_asyncio.apply()
    async def chat():
      message = {'role': 'user', 'content': '为什么天空是蓝色的?'}
      async for part in await AsyncClient().chat(model='llama3.1', messages=[message], stream=True):
        print(part['message']['content'], end='', flush=True)
    
    asyncio.run(chat())
    

    错误

    如果请求返回错误状态或在流式传输时检测到错误,则会引发错误。

    model = 'does-not-yet-exist'
    
    try:
      ollama.chat(model)
    except ollama.ResponseError as e:
      print('错误:', e.error)
      if e.status_code == 404:
        ollama.pull(model)
    

    参考文档

  • Ollama python
  • 作者:一路追寻

    物联沃分享整理
    物联沃-IOTWORD物联网 » 在 Python 中使用 Ollama API

    发表回复