Python SDK 提供了简洁的接口来进行文本生成和聊天操作。
import ollama
response = ollama.chat(model='llama3.2', messages=[
{'role': 'user', 'content': '什么是 Python?'}
])
print(response['message']['content'])
messages = [
{'role': 'user', 'content': '我叫小明'},
{'role': 'assistant', 'content': '你好小明!'},
{'role': 'user', 'content': '我叫什么名字?'}
]
response = ollama.chat(model='llama3.2', messages=messages)
print(response['message']['content'])
response = ollama.chat(
model='llama3.2',
messages=[
{'role': 'system', 'content': '你是一个 Python 专家'},
{'role': 'user', 'content': '什么是装饰器?'}
]
)
response = ollama.chat(
model='llama3.2',
messages=[{'role': 'user', 'content': '写一首诗'}],
options={
'temperature': 0.7,
'num_ctx': 4096,
'top_p': 0.9
}
)
response = ollama.generate(
model='llama3.2',
prompt='用 Python 写一个快速排序'
)
print(response['response'])
response = ollama.generate(
model='llama3.2',
prompt='写一个函数',
system='你是一个 Python 编程专家'
)
response = ollama.generate(
model='llama3.2',
prompt='生成一个用户信息,包含姓名、年龄、邮箱',
format='json'
)
import json
user = json.loads(response['response'])
print(user)
response = ollama.embeddings(
model='nomic-embed-text',
prompt='这是一段需要向量化的文本'
)
embedding = response['embedding']
print(f"向量维度: {len(embedding)}")
models = ollama.list()
for model in models['models']:
print(f"{model['model']}: {model['size'] / (1024**3):.2f} GB")
for progress in ollama.pull('llama3.2', stream=True):
if 'completed' in progress and 'total' in progress:
percent = progress['completed'] / progress['total'] * 100
print(f"\r下载进度: {percent:.1f}%", end='')
else:
print(progress.get('status', ''))
ollama.delete('my-model')
print("模型已删除")
modelfile = '''
FROM llama3.2
SYSTEM 你是一个友好的助手
PARAMETER temperature 0.7
'''
ollama.create('my-assistant', modelfile=modelfile)
response = ollama.chat(
model='llama3.2',
messages=[{'role': 'user', 'content': '北京今天天气怎么样?'}],
tools=[{
'type': 'function',
'function': {
'name': 'get_weather',
'description': '获取城市天气',
'parameters': {
'type': 'object',
'properties': {
'city': {'type': 'string', 'description': '城市名称'}
},
'required': ['city']
}
}
}]
)
if 'tool_calls' in response['message']:
for tool in response['message']['tool_calls']:
print(f"调用: {tool['function']['name']}")
print(f"参数: {tool['function']['arguments']}")
with open('image.png', 'rb') as f:
image_data = f.read()
response = ollama.chat(
model='llava',
messages=[{
'role': 'user',
'content': '这张图片里有什么?',
'images': [image_data]
}]
)
print(response['message']['content'])
import ollama
class OllamaChat:
def __init__(self, model='llama3.2', system=None):
self.model = model
self.messages = []
if system:
self.messages.append({'role': 'system', 'content': system})
def send(self, content):
self.messages.append({'role': 'user', 'content': content})
response = ollama.chat(
model=self.model,
messages=self.messages
)
reply = response['message']['content']
self.messages.append({'role': 'assistant', 'content': reply})
return reply
def clear(self):
self.messages = [m for m in self.messages if m['role'] == 'system']
# 使用
chat = OllamaChat(system='你是一个友好的助手')
print(chat.send('你好'))
print(chat.send('我叫小明'))
print(chat.send('我叫什么名字?'))