@nickyzj2023/utils
    Preparing search index...

    Function chatCompletions

    • 兼容 OpenAI API 的聊天补全函数

      • 自动处理工具调用
      • 同时支持普通响应和流式响应

      Parameters

      • model: Model

        模型配置,包含 model、baseUrl、apiKey

      • messages: Message[]

        OpenAI API 兼容的消息数组

      • extraBody: ExtraBody & { stream: true }

        可选的额外参数,如 tools、toolHandlers、temperature、stream 等

      Returns Promise<AsyncGenerator<StreamChunk, any, any>>

      普通模式下返回 { content, usage, ... }stream: true 时返回异步迭代器

      // 最简调用
      // 未填写模型名,会自动使用/v1/models的第一个模型
      const { content, usage } = await chatCompletions(
      { baseUrl: "http://127.0.0.1:11434/v1" },
      [{ role: "user", content: "你好" }],
      );
      console.log(content); // "你好!有什么我可以帮你的吗?"
      console.log(usage); // { prompt_tokens: 13, completion_tokens: 9, total_tokens: 22 }
      // 工具调用
      const { content, usage } = await chatCompletions(
      { baseUrl: "http://127.0.0.1:11434/v1", model: "model.gguf", apiKey: "sk-local-no-need-key" },
      [{ role: "user", content: "查询上海天气" }],
      {
      tools: [{
      type: "function",
      function: {
      name: "getWeather",
      description: "查询城市天气情况",
      parameters: { type: "object", properties: { city: { type: "string" } } },
      },
      }],
      toolHandlers: {
      getWeather: (args) => `${args.city}今日晴转多云,25°C`,
      },
      },
      );
      // 流式传输
      const result = await chatCompletions(
      { baseUrl: "http://127.0.0.1:11434/v1" },
      [{ role: "user", content: "你好" }],
      { stream: true },
      );
      for await (const { content, usage } of result) {
      if (content) {
      console.log("流式传输中:", content);
      } else if (usage) {
      console.log("对话结束,消耗:", usage);
      }
      }
    • 兼容 OpenAI API 的聊天补全函数

      • 自动处理工具调用
      • 同时支持普通响应和流式响应

      Parameters

      • model: Model

        模型配置,包含 model、baseUrl、apiKey

      • messages: Message[]

        OpenAI API 兼容的消息数组

      • OptionalextraBody: ExtraBody

        可选的额外参数,如 tools、toolHandlers、temperature、stream 等

      Returns Promise<Result>

      普通模式下返回 { content, usage, ... }stream: true 时返回异步迭代器

      // 最简调用
      // 未填写模型名,会自动使用/v1/models的第一个模型
      const { content, usage } = await chatCompletions(
      { baseUrl: "http://127.0.0.1:11434/v1" },
      [{ role: "user", content: "你好" }],
      );
      console.log(content); // "你好!有什么我可以帮你的吗?"
      console.log(usage); // { prompt_tokens: 13, completion_tokens: 9, total_tokens: 22 }
      // 工具调用
      const { content, usage } = await chatCompletions(
      { baseUrl: "http://127.0.0.1:11434/v1", model: "model.gguf", apiKey: "sk-local-no-need-key" },
      [{ role: "user", content: "查询上海天气" }],
      {
      tools: [{
      type: "function",
      function: {
      name: "getWeather",
      description: "查询城市天气情况",
      parameters: { type: "object", properties: { city: { type: "string" } } },
      },
      }],
      toolHandlers: {
      getWeather: (args) => `${args.city}今日晴转多云,25°C`,
      },
      },
      );
      // 流式传输
      const result = await chatCompletions(
      { baseUrl: "http://127.0.0.1:11434/v1" },
      [{ role: "user", content: "你好" }],
      { stream: true },
      );
      for await (const { content, usage } of result) {
      if (content) {
      console.log("流式传输中:", content);
      } else if (usage) {
      console.log("对话结束,消耗:", usage);
      }
      }