Files
SillyTavern_replica/API_CONFIG_DEBUG.md

6.2 KiB
Raw Blame History

API 配置调试指南

问题描述

后端日志显示 Model 和 API URL 为空:

[LLMClient] 🔧 创建 ChatOpenAI 实例
  - Model: 
  - API URL: 
  - Temperature: 1
  - Max Tokens: 30000

可能的原因

1. 前端未配置 API

症状

  • 前端控制台显示 currentProfilenullapis.mainLLM 不存在
  • 后端接收到的 apiConfig 为空对象或字段为空

解决方案

  1. 打开浏览器开发者工具F12
  2. 切换到 Console 标签
  3. 查看是否有以下警告:
    [ChatBoxStore] ⚠️ 未找到 API 配置,请先到 API 配置页面设置
    
  4. 如果有,需要先到 API 配置页面设置

2. API 配置页面设置步骤

  1. 打开左侧边栏 → 点击 API 配置 标签
  2. 创建或选择配置文件
    • 如果没有配置文件,点击 "新建配置"
    • 输入配置名称(如 "Default"
  3. 填写 Main LLM 配置
    • API URL: https://api.openai.com/v1(或其他兼容 OpenAI 的 API
    • API Key: 你的 API 密钥
    • Model: gpt-4gpt-3.5-turbo
  4. 测试连接
    • 点击 "测试连接" 按钮
    • 确保连接成功并获取到模型列表
  5. 保存配置
    • 点击 "保存" 按钮
  6. 设置为默认(可选):
    • 在配置列表中点击 "设为默认"

3. 数据结构检查

正确的 currentProfile 结构应该是:

{
  id: "profile-xxx",
  name: "Default",
  apis: {
    mainLLM: {
      apiUrl: "https://api.openai.com/v1",
      apiKey: "sk-xxx...",
      model: "gpt-4"
    },
    // 其他 API 配置...
  }
}

调试步骤

前端调试

  1. 打开浏览器控制台F12 → Console

  2. 发送消息前查看日志

    [ChatBoxStore] 🔍 API 配置状态检查:
      - currentProfile: {...}
      - apis: {...}
      - mainLLM: {...}
    
  3. 发送消息时查看日志

    --------------------------------------------------------------------------------
    [WebSocket] 📤 发送消息:
      - Floor: 6
      - Role: 互动小说家
      - Chat: 赛博朋克-数据幽灵
      - Stream: true
      - Message Length: 45
      - API Config: {
          api_url: "https://api.openai.com/v1",
          api_key: "***",
          model: "gpt-4"
        }
      - Current Profile: {...}
    --------------------------------------------------------------------------------
    
  4. 如果 API Config 为空

    • 检查 Current Profile 是否为 null
    • 检查 apis.mainLLM 是否存在
    • 确认是否已保存配置

后端调试

  1. 查看接收到的请求

    --------------------------------------------------------------------------------
    [WebSocket] 📨 收到请求:
      - Floor: 6
      - Role: 互动小说家
      - Chat: 赛博朋克-数据幽灵
      - Stream: True
      - Message Length: 45
      - API URL: https://api.openai.com/v1
      - API Key: ***xxxx
      - Model: gpt-4
    --------------------------------------------------------------------------------
    
  2. 如果显示 "⚠️ 未提供"

    • 说明前端没有发送 apiConfig
    • 检查前端代码是否正确组装数据
    • 检查 WebSocket 消息格式
  3. 如果字段为空

    • 说明前端发送了空值
    • 回到前端调试步骤

常见问题

Q1: 配置保存后仍然为空?

A: 可能是以下原因:

  1. 配置没有正确保存到 localStorage
  2. 页面刷新后没有重新加载配置
  3. 多个配置文件混淆

解决

// 在控制台执行
const store = useApiConfigStore.getState();
console.log('Profiles:', store.profiles);
console.log('Current:', store.currentProfile);

Q2: 有多个配置文件,如何切换?

A:

  1. 在 API 配置页面选择要使用的配置
  2. 点击 "加载" 按钮
  3. 确认 currentProfile 已更新

Q3: 测试连接成功,但发送消息时仍为空?

A:

  • 可能是测试后没有保存配置
  • 或者保存后没有重新加载
  • 尝试刷新页面重新加载配置

Q4: 如何快速验证配置是否正确?

A: 在浏览器控制台执行:

const apiConfig = useApiConfigStore.getState().currentProfile?.apis?.mainLLM;
console.log('API URL:', apiConfig?.apiUrl);
console.log('API Key:', apiConfig?.apiKey ? '已设置' : '未设置');
console.log('Model:', apiConfig?.model);

应该输出:

API URL: https://api.openai.com/v1
API Key: 已设置
Model: gpt-4

临时解决方案

如果暂时无法配置 API可以使用环境变量或默认值

方法 1: 使用 .env 文件

.env 文件中添加:

MAIN_LLM_API_KEY=sk-your-api-key
MAIN_LLM_MODEL=gpt-4
MAIN_LLM_BASE_URL=https://api.openai.com/v1

方法 2: 代码中添加默认值

修改 ChatBoxSlice.jsx

apiConfig: {
  api_url: apiConfigStore.currentProfile?.apis?.mainLLM?.apiUrl || 
           import.meta.env.VITE_DEFAULT_API_URL || 
           'https://api.openai.com/v1',
  api_key: apiConfigStore.currentProfile?.apis?.mainLLM?.apiKey || 
           import.meta.env.VITE_DEFAULT_API_KEY || 
           '',
  model: apiConfigStore.currentProfile?.apis?.mainLLM?.model || 
         import.meta.env.VITE_DEFAULT_MODEL || 
         'gpt-4'
}

验证修复

完成配置后,发送一条测试消息,应该看到:

前端日志

[WebSocket] 📤 发送消息:
  - API Config: {
      api_url: "https://api.openai.com/v1",
      api_key: "***",
      model: "gpt-4"
    }

后端日志

[WebSocket] 📨 收到请求:
  - API URL: https://api.openai.com/v1
  - API Key: ***xxxx
  - Model: gpt-4

[LLMClient] 🔧 创建 ChatOpenAI 实例
  - Model: gpt-4
  - API URL: https://api.openai.com/v1
  - Temperature: 1.0
  - Max Tokens: 30000

[LLMClient] 🚀 开始流式请求...

总结

  1. 确保在 API 配置页面创建了配置文件
  2. 填写完整的 Main LLM 配置URL、Key、Model
  3. 测试连接成功后保存配置
  4. 在前端控制台验证 currentProfile.apis.mainLLM 存在
  5. 发送消息时检查前后端日志中的 API 配置信息

如果仍有问题,请提供:

  • 前端控制台的完整日志
  • 后端控制台的完整日志
  • API 配置页面的截图