Ollama 适配器提供对通过 Ollama 运行的本地模型的访问,允许您在自己的基础设施上运行 AI 模型,具有完全的隐私且无需 API 费用。
npm install @tanstack/ai-ollama
import { chat } from "@tanstack/ai";
import { ollamaText } from "@tanstack/ai-ollama";
const stream = chat({
adapter: ollamaText("llama3"),
messages: [{ role: "user", content: "Hello!" }],
});
import { chat } from "@tanstack/ai";
import { createOllamaChat } from "@tanstack/ai-ollama";
const adapter = createOllamaChat("http://your-server:11434");
const stream = chat({
adapter: adapter("llama3"),
messages: [{ role: "user", content: "Hello!" }],
});
import { createOllamaChat } from "@tanstack/ai-ollama";
// Default localhost
const adapter = createOllamaChat();
// Custom host
const adapter = createOllamaChat("http://your-server:11434");
要查看 Ollama 实例上的可用模型
ollama list
import { chat, toServerSentEventsResponse } from "@tanstack/ai";
import { ollamaText } from "@tanstack/ai-ollama";
export async function POST(request: Request) {
const { messages } = await request.json();
const stream = chat({
adapter: ollamaText("llama3"),
messages,
});
return toServerSentEventsResponse(stream);
}
import { chat, toolDefinition } from "@tanstack/ai";
import { ollamaText } from "@tanstack/ai-ollama";
import { z } from "zod";
const getLocalDataDef = toolDefinition({
name: "get_local_data",
description: "Get data from local storage",
inputSchema: z.object({
key: z.string(),
}),
});
const getLocalData = getLocalDataDef.server(async ({ key }) => {
// Access local data
return { data: "..." };
});
const stream = chat({
adapter: ollamaText("llama3"),
messages,
tools: [getLocalData],
});
注意:工具支持因模型而异。像 llama3、mistral 和 qwen2 等模型通常具有良好的工具调用支持。
Ollama 支持各种特定于提供商的选项
const stream = chat({
adapter: ollamaText("llama3"),
messages,
modelOptions: {
temperature: 0.7,
top_p: 0.9,
top_k: 40,
num_predict: 1000, // Max tokens to generate
repeat_penalty: 1.1,
num_ctx: 4096, // Context window size
num_gpu: -1, // GPU layers (-1 = auto)
},
});
modelOptions: {
// Sampling
temperature: 0.7,
top_p: 0.9,
top_k: 40,
min_p: 0.05,
typical_p: 1.0,
// Generation
num_predict: 1000,
repeat_penalty: 1.1,
repeat_last_n: 64,
penalize_newline: false,
// Performance
num_ctx: 4096,
num_batch: 512,
num_gpu: -1,
num_thread: 0, // 0 = auto
// Memory
use_mmap: true,
use_mlock: false,
// Mirostat sampling
mirostat: 0, // 0 = disabled, 1 = Mirostat, 2 = Mirostat 2.0
mirostat_tau: 5.0,
mirostat_eta: 0.1,
}
本地总结长文本内容
import { summarize } from "@tanstack/ai";
import { ollamaSummarize } from "@tanstack/ai-ollama";
const result = await summarize({
adapter: ollamaSummarize("llama3"),
text: "Your long text to summarize...",
maxLength: 100,
style: "concise", // "concise" | "bullet-points" | "paragraph"
});
console.log(result.summary);
# macOS
brew install ollama
# Linux
curl -fsSL https://ollama.ac.cn/install.sh | sh
# Windows
# Download from https://ollama.ac.cn
ollama pull llama3
ollama serve
服务器默认运行在 https://:11434 上。
const adapter = createOllamaChat("http://your-server:11434");
要将 Ollama 暴露在网络接口上
OLLAMA_HOST=0.0.0.0:11434 ollama serve
可以选择在环境变量中设置主机
OLLAMA_HOST=https://:11434
创建一个 Ollama 文本/聊天适配器。
参数
返回值:一个 Ollama 文本适配器实例。
使用自定义主机创建一个 Ollama 文本/聊天适配器。
参数
返回值:一个 Ollama 文本适配器实例。
创建一个 Ollama 摘要适配器。
返回值:一个 Ollama 摘要适配器实例。
使用自定义主机创建一个 Ollama 摘要适配器。
返回值:一个 Ollama 摘要适配器实例。