Ollama-ai简介
Ollama-ai是一个强大的Ruby gem,专为与Ollama API交互而设计。它允许开发者在本地运行和管理开源大型语言模型(LLMs),为AI应用开发提供了灵活而强大的本地化解决方案。
主要特性
- 支持多种LLM模型,如Llama 2、Mistral、Gemma等
- 提供低级API访问,方便构建高级抽象
- 支持模型自定义和创建
- 支持流式输出和Server-Sent Events
- 支持文本生成和图像理解
- 提供模型管理功能,如列出、复制、删除本地模型等
快速开始
安装gem:
gem 'ollama-ai', '~> 1.3.0'
创建客户端并生成文本:
require 'ollama-ai'
client = Ollama.new(
credentials: { address: 'http://localhost:11434' },
options: { server_sent_events: true }
)
result = client.generate(
{ model: 'llama2',
prompt: 'Hi!' }
)
核心功能
文本生成
Ollama-ai提供了generate
和chat
两种方法用于文本生成:
# 使用generate方法
client.generate(
{ model: 'llama2',
prompt: 'Hi!' }
) do |event, raw|
puts event
end
# 使用chat方法
client.chat(
{ model: 'llama2',
messages: [
{ role: 'user', content: 'Hi! My name is Purple.' }
] }
) do |event, raw|
puts event
end
图像理解
Ollama-ai还支持图像理解功能,需要使用支持图像的模型如LLaVA:
require 'base64'
client.generate(
{ model: 'llava',
prompt: 'Please describe this image.',
images: [Base64.strict_encode64(File.read('piano.jpg'))] }
) do |event, raw|
print event['response']
end
模型管理
Ollama-ai提供了一系列方法用于管理本地模型:
create
: 创建自定义模型tags
: 列出本地模型show
: 显示模型信息copy
: 复制模型delete
: 删除模型pull
: 拉取模型push
: 推送模型
例如,列出本地模型:
result = client.tags
puts result
流式输出
Ollama-ai支持Server-Sent Events(SSE),实现流式输出:
client = Ollama.new(
credentials: { address: 'http://localhost:11434' },
options: { server_sent_events: true }
)
client.generate(
{ model: 'llama2',
prompt: 'Hi!' }
) do |event, raw|
puts event
end
高级用法
自定义模型
Ollama-ai允许创建自定义模型:
result = client.create(
{ name: 'mario',
modelfile: "FROM llama2\nSYSTEM You are mario from Super Mario Bros." }
) do |event, raw|
puts event
end
错误处理
Ollama-ai提供了错误处理机制:
begin
result = client.delete(
{ name: 'non_existent_model' }
)
rescue Ollama::Errors::OllamaError => error
puts error.class
puts error.message
puts error.payload
puts error.request.inspect
end
结语
Ollama-ai为开发者提供了在本地运行和管理大型语言模型的强大工具。通过其灵活的API和丰富的功能,开发者可以轻松地将AI能力集成到各种应用中,同时保持数据的本地化和隐私性。无论是进行文本生成、图像理解,还是自定义模型,Ollama-ai都为AI应用开发提供了一个强大而便捷的解决方案。
通过Ollama-ai,AI的未来正在走进每个开发者的本地环境。让我们一起探索这个充满可能性的新世界吧!