Python 与 JavaScript

官方库:ollama/ollama-pythonollama/ollama-js。它们走本机 http://localhost:11434 的原生 API,不必自己拼 NDJSON。若项目已经依赖 openai 包,也可以只改 base URL,见 OpenAI 兼容 API


安装

pip install -U ollama
# 或
uv add ollama
npm i ollama

本机需已安装 Ollama 服务,并 ollama pull 你要用的模型(示例用 gemma4)。


Python:最小对话

from ollama import chat

response = chat(
    model="gemma4",
    messages=[{"role": "user", "content": "用一句话解释什么是 Ollama。"}],
)
print(response.message.content)

chat() 返回结构化对象;多轮时把 response.message 追加回 messages。需要自定义 host、超时或云端 Header 时用 Client

from ollama import Client

client = Client(host="http://localhost:11434")
resp = client.chat(
    model="gemma4",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)
print(resp.message.content)

Python:流式

from ollama import chat

for part in chat(
    model="gemma4",
    messages=[{"role": "user", "content": "用三段话介绍本地 LLM。"}],
    stream=True,
):
    print(part.message.content, end="", flush=True)

Cloud 模型同样用法,先 ollama pull gemma4:cloud(或官方示例中的 gpt-oss:120b-cloud),model= 换成带 :cloud 的名字。

直连 https://ollama.com

import os
from ollama import Client

client = Client(
    host="https://ollama.com",
    headers={"Authorization": "Bearer " + os.environ["OLLAMA_API_KEY"]},
)

Python:generate 与 JSON

单轮补全用 generate;只要 JSON 时把 format="json",或传入 JSON Schema / Pydantic model_json_schema()(见官方 Structured Outputs):

from ollama import generate, chat

print(generate(model="gemma4", prompt="Why is the sky blue?").response)

resp = chat(
    model="gemma4",
    messages=[{"role": "user", "content": "用 JSON 返回国家名与首都,国家=加拿大。"}],
    format="json",
)
print(resp.message.content)

工具调用:把 Python 函数放进 tools=[...],检查 response.message.tool_calls,执行后再带 role: tool 回聊。完整循环见 tool calling

嵌入:ollama.embed(model="embeddinggemma", input="..."),见 Embeddings


JavaScript / TypeScript:最小对话

import ollama from "ollama";

const response = await ollama.chat({
  model: "gemma4",
  messages: [{ role: "user", content: "Say this is a test" }],
});
console.log(response.message.content);

或显式构造客户端:

import { Ollama } from "ollama";

const client = new Ollama({ host: "http://localhost:11434" });
const response = await client.chat({
  model: "gemma4",
  messages: [{ role: "user", content: "Why is the sky blue?" }],
});
console.log(response.message.content);

JavaScript:流式

import ollama from "ollama";

const stream = await ollama.chat({
  model: "gemma4",
  messages: [{ role: "user", content: "Explain Ollama in three sentences." }],
  stream: true,
});

for await (const part of stream) {
  process.stdout.write(part.message.content);
}

云端直连:

import { Ollama } from "ollama";

const ollama = new Ollama({
  host: "https://ollama.com",
  headers: { Authorization: "Bearer " + process.env.OLLAMA_API_KEY },
});

npm 包同样提供 embedgenerate、以及 format: "json"。浏览器环境注意:默认 Ollama 只监听 localhost,且可能受 CORS 限制;生产前端应经你自己的后端转发。


和 OpenAI SDK 怎么选

需求建议
用原生能力(think、Modelfile 选项、官方工具循环)官方 ollama
现有代码已是 OpenAI()base_url="http://localhost:11434/v1/"
LangChain Agentlangchain-ollama 或 ChatOpenAI 指到 /v1,见 应用集成

两种客户端都要先 pull 模型。名字必须与 ollama ls 一致(含标签)。


下一步

评论