简介
Ollama 是一个启源名目,它许可您正在当地运行庞大语言模子(LLMs)。它供给了简朴易用的 API 交心,便利开辟者正在自己的使用法式中散成各类流行的语言模子,如 Llama、DeepSeek 系列等,进而完毕天然语言处置相干的功用,无需依靠云效劳。
Python 是一种普遍使用的编程语言,具备丰硕的库战繁复的语法。颠末 Python 连接 Ollama,开辟者能够使用 Python 的劣势,如数据处置、机械进修等,分离 Ollama 供给的强大语言模子才气,快速开辟出各类天然语言处置使用,如谈天机械人、文原天生、问问体系等。
情况准备
装置 Ollama
Ollama 的装置各人能够来其民网下载对于应仄台架构的硬件截至下载单打装置便可:
https://ollama.com/
按照提醒装置完毕以后,咱们能够正在末端输出上面的号令去检察可否事情一般:
ollama -v
Ollama 供给了十分多的年夜模子可供下载战使用:
https://ollama.com/search
以近来热门的DeepSeek R1年夜模子去举例:
https://ollama.com/library/deepseek-r1
颠末下图去挑选需要的模子,而后担当右边的号令正在末端施行便可下载并运行该模子:
ollama run deepseek-r1:1.5b
装置 Python
Python 的装置便再也不具体的赘述了,前去上面的地点挑选自己的架构截至下载装置便可。
https://www.python.org/
连接方法
有二种方法能够截至连接,第一种方法比力友好,间接来挪用Ollama的API,如许不但能够正在Python中取Ollama接互也能够使用其余语言截至接互。第两种方法则是使用Ollama Python 库。
Ollama Python 库是一个用于取当地运行的 Ollama 狂言语模子(LLM)截至接互的东西。它供给了简朴、下效的 API 交心,使患上开辟者能够正在 Python 情况中轻快天挪用战办理当地模子,施行各类天然语言处置任务。
挪用Ollama API
咱们先瞅一下怎样挪用Ollama的API去截至简朴的接互,正在使用API以前,咱们需要保证Ollama正在背景运行。默认情况下Ollama效劳会运行正在http://localhost:11434上。
一、天生文原(Generate Text)
交心:POST /api/generate
功用:背模子收收提醒词汇(prompt),并获得天生的文原。
恳求格局:
{
"model": "<model-name>", // 模子称呼
"prompt": "<input-text>", //输出 的提醒词汇
"stream": false, // 可否启动流式照应(默认 false)
"options": { // 可选参数
"temperature": 0.7, // 温度参数
"max_tokens": 100 // 最年夜 token 数
}
}
照应格局:
{
"response": "<generated-text>", // 天生的文原
"done": true // 可否完毕
}
示例:
curl http://localhost:11434/api/generate -d'{
"model": "deepseek-r1:1.5b",
"prompt": "您佳!",
"stream": false
}'
二、谈天(chat)
交心:POST /api/chat
功用:撑持多轮对于话,模子会记着高低文。
恳求格局:
{
"model": "<model-name>", // 模子称呼
"messages": [ //消息 列表
{
"role": "user", // 用户脚色
"content": "<input-text>" // 用户输出
}
],
"stream": false, // 可否启动流式照应
"options": { // 可选参数
"temperature": 0.7,
"max_tokens": 100
}
}
照应格局:
{
"message": {
"role": "assistant", // 帮忙脚色
"content": "<generated-text>" // 天生的文原
},
"done": true
}
示例:
curl http://localhost:11434/api/chat -d'{
"model": "deepseek-r1:1.5b",
"messages": [
{
"role": "user",
"content": "您佳!"
}
],
"stream": false
}'
三、流式照应(Streaming Response)
Ollama 撑持流式照应,合用于及时天生文原的场景。正在恳求中树立 "stream": true,API 会逐止前去天生的文原。每一止前去一个 JSON 工具,比方:
{
"response": "<partial-text>", //局部 天生的文原
"done": false // 可否完毕
}
示例:
curl http://localhost:11434/api/generate -d'{
"model": "deepseek-r1:1.5b",
"prompt": "您佳!",
"stream": true
}'
四、列出当地模子(List Models)
交心:GET /api/tags
功用:列出当地已经下载的模子。
照应格局:
{
"models": [
{
"name": "<model-name>", // 模子称呼
"size": "<model-size>", // 模子巨细
"modified_at": "<timestamp>" // 改正时间
// 简略部门
}
]
}
示例:
curl http://localhost:11434/api/tags
五、推与模子(Pull Model)
交心:POST /api/pull
功用:从模子库中推与模子。
恳求格局:
{
"name": "<model-name>" // 模子称呼
}
照应格局:
{
"status": "downloading", // 下载形状
"digest": "<model-digest>" // 模子择要
}
示例:
curl http://localhost:11434/api/pull -d'{
"name": "deepseek-r1:1.5b"
}'
六、简略模子(Delete Model)
交心:DELETE /api/delete
功用:简略当地模子。
恳求格局:
{
"model": "<model-name>" // 模子称呼
}
示例:
curl -X DELETE http://localhost:11434/api/delete -d'{
"model": "deepseek-r1:1.5b"
}'
使用Ollama Python库
使用如下号令装置 Ollama Python 库:
pip install ollama
一、谈天功用
颠末 ollama.chat()办法 取模子截至对于话接互。比方:
from ollama import chat
response = chat(
model='deepseek-r1:1.5b',
messages=[
{'role': 'user', 'content': '您佳,您是DeepSeek吗?'}
])
print(response['message']['content'])
别的,撑持流式照应,颠末树立 stream=True,能够逐步获得模子的输出:
from ollama import chat
stream = chat(
model='deepseek-r1:1.5b',
messages=[
{'role': 'user',
'content': '您佳'}
],
stream=True)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
二、文原天生
使用 ollama.generate()办法 按照提醒天生文原。比方:
import ollama
response = ollama.generate(
model='deepseek-r1:1.5b',
prompt='请介绍 Python 语言的特性。'
)
print(response)
三、办理模子
如下的多少种函数能够用于操纵模子:
# 列出可用的模子
models = ollama.list()
# 显现模子疑息
info = ollama.show('deepseek-r1:1.5b')
#创立 自界说模子
modelfile = '''
FROM deepseek-r1:1.5b
SYSTEM 您是青檬小栈御用智能年夜模子。
'''
ollama.create(model='bystart', modelfile=modelfile)
# 复造模子
ollama.copy('deepseek-r1:1.5b', 'deepseek-r1:1.5b_copy')
# 简略模子
ollama.delete('deepseek-r1:1.5b_copy')
四、自界说客户端
能够颠末 Client 类创立自界说客户端,以满意一定需要,比方树立自界说的恳求头或者指定 Ollama效劳 的地点:
from ollama import Client
client = Client(
host='http://localhost:11434',
headers={'x-some-header': 'some-value'}
)
response = client.chat(
model='deepseek-r1:1.5b',
messages=[
{
'role': 'user',
'content': '您佳!'}
])
print(response['message']['content'])
五、同步操纵
Ollama Python 库撑持同步操纵,合用于需要处置多个并收恳求的使用。比方,同步谈天:
import asyncio
from ollama import AsyncClient
async def chat():
message = {
'role': 'user',
'content': '您佳!'
}
response = await (AsyncClient()
.chat(
model='deepseek-r1:1.5b',
messages=[message]
))
print(response['message']['content'])
asyncio.run(chat())
六、多模态输出
撑持多模态输出,比方正在谈天中包罗图象:
import ollama
with open('image.png', 'rb') as file:
response = ollama.chat(
model='deepseek-r1:1.5b',
messages=[
{
'role': 'user',
'content': '那弛图片有甚么奇特之处?',
'images': [file.read()],
},
],
)
print(response['message']['content'])
七、构造化输出
撑持以 JSON、YAML 等格局前去构造化数据,就于法式剖析战使用:
import ollama
response = ollama.chat(
model='deepseek-r1:1.5b',
messages=[
{
'role': 'user',
'content': '请介绍好国的都城、生齿、占空中积疑息,并以 JSON 格局前去。'
}
],
format='json',
options={'temperature': 0},
)
print(response['message']['content'])
处置Ollama API没法脱透
默认情况下,Ollama效劳 仅监听当地地点(127.0.0.1),没法从其余装备会见。要许可局域网内乱的装备会见 Ollama效劳 ,需要将 OLLAMA_HOST 情况变质树立为 0.0.0.0,并树立 OLLAMA_ORIGINS 为 *。
windows 用户能够正在末端输出如下号令:
setx OLLAMA_HOST "0.0.0.0"
setx OLLAMA_ORIGINS "*"
Mac 用户能够施行:
launchctl setenv OLLAMA_HOST "0.0.0.0"
launchctl setenv OLLAMA_ORIGINS "*"
关于 Linux 用户且 llama 动作 systemd效劳 运行,则需编纂效劳设置:
sudo systemctl edit ollama.service
正在 [Service]局部 增加如下实质:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_ORIGINS=*"
从头减载 systemd偏重 开 Ollama:
sudo systemctl daemon-reload
sudo systemctl restart ollama
欢送各人存眷尔的公家号,将会为各人举荐更优良的实质! |