llm.moonshot.js 1.06 KB
/**
 * Moonshot 子类 —— Moonshot 的对话补全 API 与 OpenAI Chat Completions 兼容,
 * 差异仅在默认 baseUrl。故继承 OpenAIProvider,只覆写 defaultBaseUrl();
 * chat 与 messageToValue 直接复用父类(同 OpenAI 帧形态)。不复制流式/重试/trace。
 *
 * 文件名 `llm.moonshot.js` 即注册键 `moonshot`。
 */

import OpenAIProvider from './llm.openai.js'

export default class MoonshotProvider extends OpenAIProvider {
  /** @returns {string} */
  defaultBaseUrl() {
    return 'https://api.moonshot.cn/v1'
  }

  /**
   * Moonshot 支持 json_object(response_format.type='json_object',与 OpenAI 同形,原样透传),
   * 不支持 json_schema。故分派表只声明 json_object;json_schema 由 base 统一 badRequest。
   * @protected
   * @returns {Record<string, (body:Record<string,any>, headers:Record<string,string>, rf:{schema?:object, name?:string}) => void>}
   */
  responseFormatHandlers() {
    return {
      json_object: (body) => {
        body.response_format = { type: 'json_object' }
      },
    }
  }
}