Ollama 让您可以轻松在本地硬件上运行大型语言模型——无需云端依赖、无 API 费用,并完全保护数据隐私。对于希望在应用程序中集成本地 AI 功能的 Delphi 开发者,sgcWebSockets 提供了 TsgcHTTP_API_Ollama——一个使用简洁、类型安全的 Delphi 代码封装整个 Ollama API 的原生组件。
无论您需要将敏感数据保留在本地、构建离线 AI 功能、管理自己的模型库,还是为本地向量搜索生成嵌入向量,该组件都能让您直接访问 Ollama 的所有功能。无需云端账户,无需定期支付 API 费用。只需放置组件,指向您的 Ollama 实例,即可开始构建。
完整的 API 覆盖
Ollama API 的每个主要功能都开箱即用。
|
聊天补全 发送带有系统提示的消息,同步或流式接收响应。完全控制温度、top-p 和停止序列。 |
实时流式传输 使用 Server-Sent Events 逐 token 流式传输响应。使用本地运行的模型构建响应式 UI。 |
模型管理 以编程方式拉取、查看详情、列出标签和删除模型。从 Delphi 代码实现完整的生命周期管理。 |
|
嵌入向量 在本地生成向量嵌入。无需向云端发送数据即可实现语义搜索、聚类和分类。 |
自托管/可配置主机 通过可配置的主机 URL 连接到任何 Ollama 实例。可在本地、局域网服务器或私有云中运行。 |
内置重试与日志记录 在瞬态故障时自动重试,可配置重试次数和等待间隔。完整的请求/响应日志记录用于调试。 |
快速入门
不到一分钟即可将 Ollama 集成到您的 Delphi 项目中。放置组件,配置主机,发送您的第一条消息。
// Create the component and configure the host
var
Ollama: TsgcHTTP_API_Ollama;
vResponse: string;
begin
Ollama := TsgcHTTP_API_Ollama.Create(nil);
Try
Ollama.OllamaOptions.Host := 'http://localhost:11434';
// Send a simple message to a local model
vResponse := Ollama._CreateMessage(
'llama3', 'Hello, Ollama!');
ShowMessage(vResponse);
Finally
Ollama.Free;
End;
end;
无需 API 密钥。连接到本地 Ollama 实例时,无需身份验证。对于远程或安全部署,您可以通过 OllamaOptions.ApiKey 可选地设置 API 密钥。
聊天补全与流式传输
聊天补全 API 适用于您已拉取到 Ollama 实例的任何模型。发送带有可选系统提示的文本,同步或实时流式接收响应。
系统提示
通过提供设置对话上下文、角色或约束条件的系统提示来控制模型行为。
vResponse := Ollama._CreateMessageWithSystem(
'llama3',
'You are a helpful assistant that responds in Spanish.',
'What is the capital of France?');
// Returns: "La capital de Francia es París."
实时流式传输
为构建响应式用户界面,使用 Server-Sent Events 逐 token 流式传输模型响应。
// Enable streaming via SSE
Ollama.OnHTTPAPISSE := OnSSEEvent;
Ollama._CreateMessageStream('llama3',
'Write a short poem about Delphi programming.');
procedure TForm1.OnSSEEvent(Sender: TObject;
const aEvent, aData: string; var Cancel: Boolean);
begin
// aData: JSON payload with generated content
Memo1.Lines.Add(aData);
end;
高级类型化 API
要完全控制请求参数(温度、top-p、停止序列、最大 token 数),请使用类型化的请求和响应类。
var
oRequest: TsgcOllamaClass_Request_ChatCompletion;
oMessage: TsgcOllamaClass_Request_Message;
oResponse: TsgcOllamaClass_Response_ChatCompletion;
begin
oRequest := TsgcOllamaClass_Request_ChatCompletion.Create;
Try
oRequest.Model := 'llama3';
oRequest.MaxTokens := 2048;
oRequest.Temperature := 0.7;
oMessage := TsgcOllamaClass_Request_Message.Create;
oMessage.Role := 'user';
oMessage.Content := 'Explain quantum computing in simple terms.';
oRequest.Messages.Add(oMessage);
oResponse := Ollama.CreateMessage(oRequest);
Try
if Length(oResponse.Choices) > 0 then
ShowMessage(oResponse.Choices[0].MessageContent);
Finally
oResponse.Free;
End;
Finally
oRequest.Free;
End;
end;
模型管理
通过 Delphi 代码管理整个本地模型库。以编程方式拉取新模型、查看详情、列出可用标签并删除不再需要的模型。
拉取模型
// Download a model from the Ollama registry
Ollama._PullModel('llama3');
查看模型详情
// Get detailed information about a model
vDetails := Ollama._ShowModel('llama3');
ShowMessage(vDetails);
列出模型和标签
// List all models via OpenAI-compatible endpoint
vModels := Ollama._GetModels;
// List model tags with detailed metadata (name, size, digest)
vTags := Ollama._GetTags;
// Typed API: access tag properties directly
var
oTags: TsgcOllamaClass_Response_Tags;
i: Integer;
begin
oTags := Ollama.GetTags;
Try
for i := 0 to Length(oTags.Models) - 1 do
Memo1.Lines.Add(Format('%s (%d bytes)',
[oTags.Models[i].Name, oTags.Models[i].Size]));
Finally
oTags.Free;
End;
end;
删除模型
// Remove a model from the local system
Ollama._DeleteModel('old-model:latest');
嵌入向量
使用任何支持嵌入的模型在本地生成向量嵌入。嵌入向量支持语义搜索、文档聚类和分类——所有这些都无需向外部服务器发送数据。
// Generate embeddings locally
var
vEmbedding: string;
begin
vEmbedding := Ollama._CreateEmbeddings(
'nomic-embed-text',
'Delphi is a powerful programming language.');
ShowMessage(vEmbedding);
end;
如需完全控制,请使用类型化 API 访问原始嵌入值。
var
oResponse: TsgcOllamaClass_Response_Embeddings;
i: Integer;
begin
oResponse := Ollama.CreateEmbeddings(
'nomic-embed-text',
'Delphi is a powerful programming language.');
Try
for i := 0 to oResponse.EmbeddingCount - 1 do
Memo1.Lines.Add(FloatToStr(oResponse.GetEmbeddingValue(i)));
Finally
oResponse.Free;
End;
end;
数据隐私。使用 Ollama,您的数据永远不会离开您的网络。这使其非常适合对数据驻留和隐私有严格要求的受监管行业(医疗、金融、政府)。
配置与选项
通过全面的配置选项精细调整组件行为。
| 属性 | 描述 |
|---|---|
OllamaOptions.Host |
Ollama 服务器 URL(例如 http://localhost:11434) |
OllamaOptions.ApiKey |
安全部署的可选 API 密钥 |
HttpOptions.ReadTimeout |
HTTP 读取超时时间(毫秒,默认:60000) |
LogOptions.Enabled |
启用请求/响应日志记录 |
RetryOptions.Enabled |
在瞬态故障时自动重试 |
RetryOptions.Retries |
最大重试次数(默认:3) |
RetryOptions.Wait |
重试间等待时间(毫秒,默认:3000) |
支持的模型
Ollama 支持数百个开源模型。以下是一些常用选择:
| 模型 | 参数量 | 最适合 |
|---|---|---|
llama3 |
8B / 70B | 通用聊天、推理 |
mistral |
7B | 快速、高效的文本生成 |
codellama |
7B / 13B / 34B | 代码生成与分析 |
nomic-embed-text |
137M | 文本嵌入、语义搜索 |
零成本,完全掌控。在您自己的硬件上运行 AI 模型,无需按 token 计费。结合 sgcWebSockets 内置的重试逻辑和日志记录,您可以获得适用于 Delphi 的生产就绪本地 AI 集成。
