首页 论坛 置顶 使用Ollama与Python:简明指南

正在查看 1 个帖子:1-1 (共 1 个帖子)
  • 作者
    帖子
  • #15961

    安装了Ollama并尝试从命令行运行模型后,下一步就是将这些强大的AI功能集成到您的Python应用程序中。本指南将向您展示如何在Python中使用Ollama。

    设置

    首先,确保Ollama已在您的系统上安装并运行。

    如果您对Ollama还不熟悉,可以查看这篇文章 Ollama入门:在您的计算机上运行LLM

    所需的Ollama模型

    在运行本指南中的Python示例之前,请确保您已拉取必要的模型。您可以使用Ollama CLI来拉取它们:

    
    拉取这些示例中使用的模型
    
    ollama pull llama3.2:1b

    您只需拉取这些模型一次。可以使用以下命令检查您已经拥有的模型:

    ollama list
    
    
    

    创建虚拟环境

    为您的 Python 项目使用虚拟环境是一种良好的实践。这可以使您的依赖项保持隔离,并使您的项目更加便携:

    # 创建虚拟环境  
    
    python -m venv ollama-env  
    
    # 激活虚拟环境  
    
    # 在 Windows 上:  
    
    ollama-envScriptsactivate  
    
    # 在 macOS/Linux 上:  
    source ollama-env/bin/activate
    
    
    

    安装依赖

    安装 Ollama Python 库:

    pip install ollama

     

    创建 requirements.txt

    为了更好的项目管理,创建一个 requirements.txt 文件:

    pip freeze > requirements.txt
    

    要在未来从此文件安装:

    pip install -r requirements.txt
    

    基本用法

    让我们从一个使用 Llama 3.2 1B 模型的简单示例开始。

    创建一个名为 generate.py 的文件,内容如下:

    from ollama import generate  
    # 正常响应  
    response = generate('llama3.2:1b', '为什么天空是蓝色的?')  
    print(response['response'])
    

    这将输出模型对天空为何是蓝色的完整解释。

    基本用法截图

    流式响应

    为了获得更互动的体验,您可以在生成响应时获取结果。

    创建一个名为 generate-stream.py 的文件,内容如下:

    from ollama import generate  
    # 流式响应  
    print("流式响应:")  
    for chunk in generate('llama3.2:1b', '为什么天空是蓝色的?', stream=True):  
        print(chunk['response'], end='', flush=True)  
    print()  # 末尾换行

    这会随着响应的生成逐步显示内容,从而创造出更具互动性的体验。

    流媒体使用截图

    为什么使用 for chunk in generate

    当您使用Ollama的流式功能时,响应并不会一次性返回。相反,它被分成小块(chunks),随着模型生成的内容逐个到达。

    带有 stream=Truegenerate() 函数在Python中返回一个迭代器。这个迭代器在模型生成新文本块时会逐个返回这些文本块。for 循环会逐一处理这些到达的文本块:

    1. 每个块包含响应的一小部分,存储在 chunk['response'] 中。
    2. end='' 参数防止在块之间添加换行符。
    3. flush=True 确保文本立即显示。

    这创造了实时观看AI“思考”的效果,类似于观看某人打字。

    使用系统提示

    系统提示允许您在对话开始之前为模型设置上下文和指令。这是一种强大的方式来定义模型的行为。

    创建一个名为 chat-system-role.py 的文件,内容如下:

    from ollama import chat  
    
    # 定义系统提示  
    system_prompt = "你说话的方式和声音像一个海盗,句子简短。"  
    # 使用系统提示进行聊天  
    response = chat('llama3.2:1b',   
                    messages=[
    
    
    
    {'role': 'system', 'content': system_prompt},  
    {'role': 'user', 'content': '告诉我关于你的船的事。'}  
    print(response.message.content)

    系统提示在整个对话过程中保持活跃,影响模型对所有用户输入的响应。

    
    

    系统角色使用截图

     

    对话上下文

    通过流式传输保持上下文对话,以获得更互动的体验。

    创建一个名为 chat-history-stream.py 的文件,内容如下:

    from ollama import chat  
    
    # 初始化一个空的消息历史  
    messages = []  
    while True:  
        user_input = input('带历史记录的聊天: ')  
        if user_input.lower() == 'exit':  
            break  
        # 在保持对话历史的同时获取流式响应  
        response_content = ""  
        for chunk in chat(  
            'llama3.2:1b',  
            messages=messages + [  
                {'role': 'system', 'content': '你是一个有帮助的助手。你只用简短的句子回答。'},  
                {'role': 'user', 'content': user_input},  
            ],  
            stream=True  
        ):
    

    python
    if chunk.message:
    response_chunk = chunk.message.content
    print(response_chunk, end=”, flush=True)
    response_content += response_chunk
    # 将交流添加到对话历史中
    messages += [
    {‘role’: ‘user’, ‘content’: user_input},
    {‘role’: ‘assistant’, ‘content’: response_content},
    ]
    print(‘n’) # 在响应后添加空行

    在这里你可以看到这个示例的样子。

    聊天使用截图

    结论

    Ollama Python库使得将强大的语言模型集成到您的Python应用程序中变得简单。无论您是在构建一个简单的脚本还是一个复杂的应用程序,该库的直观API都允许您专注于创造价值,而不是管理底层的AI基础设施。

    随着您对基础知识的逐渐熟悉,可以探索更多高级功能,并考虑如何利用这些能力在您的项目中解决实际问题。

    资源

    在这个GitHub仓库中,您将找到可运行的代码示例: GitHub仓库

正在查看 1 个帖子:1-1 (共 1 个帖子)
  • 哎呀,回复话题必需登录。