阿里云,云端部署ollama,本地调用原创教程

写在最前面:本人用markdown用得不太好,很尽力排版了,先准备好本地端python代码,再看后面的内容。

import ollama
import httpx
import time
# 设置Ollama服务器地址
client = ollama.Client(
    host='http://(这里填你的公网IP地址):11434',
    timeout=httpx.Timeout(
        connect=5.0,
        read=30.0,
        write=30.0,
        pool=None
    )
)
def chat_with_ollama():
    try:
        # 测试连接
        print("正在测试与服务器的连接...")
        try:
            # 尝试列出可用模型来测试连接
            client.list()
            print("成功连接到服务器!")
        except Exception as e:
            print(f"连接服务器失败: {str(e)}")
            print("请检查以下几点:")
            print("1. 确保服务器IP地址正确")
            print("2. 确保服务器上的Ollama服务正在运行")
            print("3. 确保服务器防火墙允许端口11434的访问")
            print("4. 确保服务器的Ollama配置允许远程连接")
            return

        # 创建对话
        print("\n开始与Ollama对话(输入'退出'结束对话)")

        while True:
            # 获取用户输入
            user_input = input("\n你: ")

            # 检查是否退出
            if user_input.lower() == '退出':
                print("结束对话")
                break

            # 发送请求到Ollama
            try:
                response = client.chat(model='qwen2.5:0.5b', messages=[
                    {
                        'role': 'user',
                        'content': user_input
                    }
                ])

                # 打印响应
                print("\nOllama:", response['message']['content'])
            except Exception as e:
                print(f"\n请求处理出错: {str(e)}")
                print("正在尝试重新连接...")
                time.sleep(2)  # 等待2秒后继续

    except Exception as e:
        print(f"发生错误: {str(e)}")


if __name__ == "__main__":
    chat_with_ollama()

云端部署好最后的效果:
阿里云,云端部署ollama,本地调用原创教程_第1张图片

Ollama - 大模型运行框架

概述

Ollama 是一个开源框架,旨在简化在本地环境中部署和管理大型语言模型(LLMs)的过程。它支持多种流行的模型,并提供了简单的命令行接口和Python库,使用户可以轻松地运行、管理和与这些模型交互。

快速开始

安装

Linux 和 macOS

通过以下命令快速安装Ollama:

curl -fsSL https://ollama.com/install.sh | sh

对于希望更细致控制安装过程的高级用户,可以手动下载二进制文件并设置为系统服务:

  1. 下载二进制文件

    sudo curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama
    sudo chmod +x /usr/bin/ollama
    
  2. 创建Ollama用户

    sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
    
  3. 创建服务文件 /etc/systemd/system/ollama.service

    [Unit]
    Description=Ollama Service
    After=network-online.target
    
    [Service]
    ExecStart=/usr/bin/ollama serve
    User=ollama
    Group=ollama
    Restart=always
    RestartSec=3
    
    [Install]
    WantedBy=default.target
    
  4. 启动服务

    sudo systemctl daemon-reload
    sudo systemctl enable ollama
    sudo systemctl start ollama
    
Windows

下载并安装Windows客户端:

下载地址

Python 包

安装Ollama的Python包:

pip install ollama

运行模型

启动Ollama服务端:

ollama serve

拉取模型:

ollama pull llama2

运行模型:

ollama run llama2

使用Python接口

使用Python与Ollama交互的示例代码:

import ollama

response = ollama.chat(
    model='llama2', 
    messages=[
        {
            'role': 'user',
            'content': 'Why is the sky blue?',
        },
    ]
)
print(response['message']['content'])

使用OpenAI兼容接口

使用OpenAI兼容接口与Ollama交互的示例代码:

from openai import OpenAI

client = OpenAI(
    base_url='http://localhost:11434/v1',
    api_key='ollama',  # required, but unused
)

response = client.chat.completions.create(
    model="llama2",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The LA Dodgers won in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]
)

print(response.choices[0].message.content)

使用HTTP API

通过HTTP API与Ollama交互的示例代码:

curl -X POST http://localhost:11434/api/generate -d '{
    "model": "llama2",
    "prompt": "Why is the sky blue?"
}'

高级功能

模型管理

  • 列出已下载模型

    ollama list
    
  • 列出正在运行的模型

    ollama ps
    
  • 复制模型

    ollama cp source_model destination_path
    
  • 删除模型

    ollama rm model_name
    

更新Ollama

定期更新Ollama以获取最新功能和修复:

curl -fsSL https://ollama.com/install.sh | sh

或者:

sudo curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama
sudo chmod +x /usr/bin/ollama

查看日志

查看Ollama服务的日志输出:

journalctl -u ollama

卸载Ollama

如果您决定不再使用Ollama,可以通过以下步骤将其完全从系统中移除:

  1. 停止并禁用服务

    sudo systemctl stop ollama
    sudo systemctl disable ollama
    
  2. 删除服务文件和Ollama二进制文件

    sudo rm /etc/systemd/system/ollama.service
    sudo rm $(which ollama)
    
  3. 清理Ollama用户和组

    sudo rm -r /usr/share/ollama
    sudo userdel ollama
    sudo groupdel ollama
    

支持的模型

Ollama支持多种大型语言模型,包括但不限于:

  • LLaMA
  • LLaMA 2
  • Mistral
  • Qwen
  • 其他社区贡献的模型

更多支持的模型列表请参阅 Ollama 模型库 或 ModelScope 模型库。

贡献

欢迎贡献代码、文档或提出问题。请参阅 CONTRIBUTING.md 了解如何参与项目。

许可证

Ollama 项目遵循 Apache License 2.0。


项目主页

配置服务器以允许远程连接:

  1. 配置防火墙允许端口11434访问

    在服务器上需要执行以下操作:

# 如果是Linux服务器,使用以下命令:
sudo ufw allow 11434/tcp  # 如果使用UFW防火墙
# 或
sudo firewall-cmd --permanent --add-port=11434/tcp  # 如果使用firewalld
sudo firewall-cmd --reload

# 如果是Windows服务器,需要:
1. 打开 Windows Defender 防火墙(控制面板 -> Windows Defender 防火墙)
2. 点击"高级设置"
3. 点击"入站规则" -> "新建规则"
4. 选择"端口"
5. 指定TCP端口11434
6. 选择"允许连接"
7. 应用到所有配置文件
8. 给规则起个名字(如"Ollama Remote Access"
  1. 配置Ollama允许远程连接
    在服务器上需要修改Ollama的配置来允许远程访问:

如果是Linux服务器:

# 编辑 Ollama 服务配置
sudo systemctl edit ollama

# 添加以下内容:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"

# 重启 Ollama 服务
sudo systemctl restart ollama

如果是Windows服务器:

# 设置环境变量
setx OLLAMA_HOST "0.0.0.0"

# 然后重启 Ollama 服务

在Windows系统中设置环境变量有两种方式,我来详细说明:

方式1 - 使用命令行

  1. 以管理员身份打开 PowerShell 或 命令提示符(CMD)

    • Win + X
    • 选择 “Windows PowerShell (管理员)” 或 “命令提示符 (管理员)”
  2. 在打开的窗口中输入命令:

    setx OLLAMA_HOST "0.0.0.0" /M
    

    注意:/M 参数表示设置系统环境变量而不是用户环境变量

方式2 - 使用图形界面(推荐)

  1. Win + R 打开运行对话框
  2. 输入 sysdm.cpl 并回车
  3. 在打开的系统属性窗口中:
    • 切换到 “高级” 标签
    • 点击 “环境变量” 按钮
  4. 在 “系统变量” 区域:
    • 点击 “新建” 按钮
    • 变量名输入:OLLAMA_HOST
    • 变量值输入:0.0.0.0
    • 点击 “确定”

设置完环境变量后:

  1. 关闭所有已打开的命令行窗口
  2. 重启 Ollama 服务(如果已在运行)
  3. 重新启动 Ollama

这样就完成了环境变量的设置,Ollama 将监听所有网络接口,允许远程连接。

  1. 验证配置**:
    在服务器上可以使用以下命令验证Ollama是否正在监听所有接口:
# Linux
netstat -tulpn | grep 11434

# Windows
netstat -an | findstr 11434

应该能看到类似这样的输出:

TCP    0.0.0.0:11434          0.0.0.0:0              LISTENING

这里的0.0.0.0表示Ollama正在监听所有网络接口。

完成这些配置后,远程客户端应该就能够连接到Ollama服务了。如果仍然无法连接,可以通过以下命令测试连接:

# 在服务器上测试本地访问
curl http://localhost:11434/api/version

# 在客户端机器上测试远程访问
curl http://118.31.189.0:11434/api/version

如果配置正确,这两个命令都应该返回Ollama的版本信息。如果本地访问成功但远程访问失败,那就说明是网络连接或防火墙配置的问题。

服务器本地可以访问,而远程访问不了,那么问题主要集中在网络访问权限上。让我们一步步解决:

首先检查阿里云安全组设置:

登录阿里云控制台

找到你的ECS实例

点击"安全组" -> “配置规则”

点击"手动添加",添加如下规则:

授权策略:允许

优先级:1

协议类型:TCP

端口范围:11434/11434

授权对象:0.0.0.0/0

描述:Ollama访问端口

你可能感兴趣的:(阿里云,云计算,python)