跳到主要内容

Ollama

@aigne/ollama 包提供了 AIGNE 框架与通过 Ollama 本地托管的 AI 模型之间的无缝集成。这使得开发人员能够利用在自己硬件上运行的各种开源语言模型,确保了 AI 功能的隐私性和离线访问能力。

本指南涵盖了在您的 AIGNE 应用中配置和使用 OllamaChatModel 的必要步骤。有关其他模型提供商的信息,请参阅模型概述

下图说明了 AIGNE 框架如何与本地 Ollama 实例进行交互。

Ollama

先决条件

在使用此包之前,您必须在本地计算机上安装并运行 Ollama。您还需要拉取至少一个模型。有关详细说明,请参阅 Ollama 官方网站

安装

首先,使用您偏好的包管理器安装必要的 AIGNE 包。

npm

```bash npm install @aigne/ollama @aigne/core ```

yarn

```bash yarn add @aigne/ollama @aigne/core ```

pnpm

```bash pnpm add @aigne/ollama @aigne/core ```

配置

OllamaChatModel 类是与 Ollama 交互的主要接口。实例化模型时,您可以提供几个配置选项来自定义其行为。

OllamaChatModel 实例化

typescript
import { OllamaChatModel } from "@aigne/ollama";

const model = new OllamaChatModel({
  // 指定要使用的 Ollama 模型
  model: "llama3",

  // 本地 Ollama 实例的基础 URL
  baseURL: "http://localhost:11434/v1",

  // 传递给模型的可选参数
  modelOptions: {
    temperature: 0.7,
  },
});

构造函数接受以下参数:

  • model string (default: llama3.2) — 要使用的模型名称(例如 llama3、mistral)。请确保您已在 Ollama 实例中拉取该模型。
  • baseURL string (default: http://localhost:11434/v1) — Ollama API 的基础 URL。也可以使用 OLLAMA_BASE_URL 环境变量进行配置。
  • apiKey string (default: ollama) — 一个占位符 API 密钥。Ollama 默认不需要身份验证,但 AIGNE 框架要求密钥为非空。它默认为 "ollama",并且可以通过 OLLAMA_API_KEY 环境变量进行设置。
  • modelOptions object — 一个包含传递给 Ollama API 的额外参数的对象,例如 temperature、top_p 等。这些选项可用于微调模型的响应生成。

基本用法

要运行模型,请使用 invoke 方法。传递消息负载以生成聊天补全。

基本调用

typescript
import { OllamaChatModel } from "@aigne/ollama";

const model = new OllamaChatModel({
  model: "llama3",
  modelOptions: {
    temperature: 0.8,
  },
});

const result = await model.invoke({
  messages: [{ role: "user", content: "Explain the importance of local AI models." }],
});

console.log(result.text);

invoke 方法返回一个 promise,该 promise 会解析为一个包含模型响应的对象。

响应示例

json
{
  "text": "本地 AI 模型至关重要有几个原因。首先,它们提供了增强的隐私和安全性,因为数据在设备上处理,永远不会离开用户的机器...",
  "model": "llama3"
}

流式响应

对于需要实时交互的应用,您可以流式传输模型的响应。在 invoke 方法中将 streaming 选项设置为 true。该方法将返回一个异步迭代器,在响应块可用时生成它们。

流式处理示例

typescript
import { isAgentResponseDelta } from "@aigne/core";
import { OllamaChatModel } from "@aigne/ollama";

const model = new OllamaChatModel({
  model: "llama3",
});

const stream = await model.invoke(
  {
    messages: [{ role: "user", content: "Tell me a short story about a robot." }],
  },
  { streaming: true },
);

let fullText = "";
process.stdout.write("Response: ");

for await (const chunk of stream) {
  if (isAgentResponseDelta(chunk)) {
    const text = chunk.delta.text?.text;
    if (text) {
      fullText += text;
      process.stdout.write(text);
    }
  }
}

console.log("\n\n--- End of Stream ---");
console.log("Full text:", fullText);

此示例演示了如何处理流。每个块都是完整响应的增量。您可以累积每个块的文本以重构完整的消息。

总结

@aigne/ollama 包提供了一种强大而直接的方式,将本地开源模型集成到您的 AIGNE 应用中。通过遵循本指南中的步骤,您可以设置 OllamaChatModel,根据您的需求进行配置,并利用标准和流式补全功能。

有关其他可用模型的更多信息,请参阅以下指南: