写在最前面:本人用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 是一个开源框架,旨在简化在本地环境中部署和管理大型语言模型(LLMs)的过程。它支持多种流行的模型,并提供了简单的命令行接口和Python库,使用户可以轻松地运行、管理和与这些模型交互。
通过以下命令快速安装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用户:
sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
创建服务文件 /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
启动服务:
sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollama
下载并安装Windows客户端:
下载地址
安装Ollama的Python包:
pip install ollama
启动Ollama服务端:
ollama serve
拉取模型:
ollama pull llama2
运行模型:
ollama run llama2
使用Python与Ollama交互的示例代码:
import ollama
response = ollama.chat(
model='llama2',
messages=[
{
'role': 'user',
'content': 'Why is the sky blue?',
},
]
)
print(response['message']['content'])
使用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与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以获取最新功能和修复:
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,可以通过以下步骤将其完全从系统中移除:
停止并禁用服务:
sudo systemctl stop ollama
sudo systemctl disable ollama
删除服务文件和Ollama二进制文件:
sudo rm /etc/systemd/system/ollama.service
sudo rm $(which ollama)
清理Ollama用户和组:
sudo rm -r /usr/share/ollama
sudo userdel ollama
sudo groupdel ollama
Ollama支持多种大型语言模型,包括但不限于:
更多支持的模型列表请参阅 Ollama 模型库 或 ModelScope 模型库。
欢迎贡献代码、文档或提出问题。请参阅 CONTRIBUTING.md 了解如何参与项目。
Ollama 项目遵循 Apache License 2.0。
项目主页
配置防火墙允许端口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")
如果是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 - 使用命令行:
以管理员身份打开 PowerShell 或 命令提示符(CMD)
Win + X
在打开的窗口中输入命令:
setx OLLAMA_HOST "0.0.0.0" /M
注意:/M
参数表示设置系统环境变量而不是用户环境变量
方式2 - 使用图形界面(推荐):
Win + R
打开运行对话框sysdm.cpl
并回车OLLAMA_HOST
0.0.0.0
设置完环境变量后:
这样就完成了环境变量的设置,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访问端口