Skip to content

uzhao/code_switch

Repository files navigation

LLM Proxy Debugger

这是一个强大且灵活的代理服务器,专为拦截、调试和管理与大型语言模型 (LLM) API 的交互而设计。它充当您的 LLM 应用程序与 Anthropic、OpenAI 和 Google Gemini 等提供商之间的中间件。

功能特性

  • 请求/响应拦截:捕获并记录完整的 HTTP 请求和响应,包括头部和正文。
  • 流式支持:完全支持流式响应 (Server-Sent Events),在实时转发的同时捕获数据块。
  • 模型映射:动态地将模型名称(例如 claude-3-opus)映射到特定的端点和配置。
  • 多提供商支持:内置支持多种 API 格式:
    • Anthropic
    • OpenAI
    • Gemini
    • 通用 OpenAI 兼容端点
  • Pass-Through 模式:自动处理未知模型,创建“透传”配置,确保您的应用即使在使用新模型时也能正常工作。
  • 详细日志:将所有交互作为 JSON 文件存储在 logs/ 目录中,以便进行详细分析。
  • Web 界面:包含一个基于 Web 的 UI(根路径),用于查看和管理日志。

安装

  1. 克隆仓库

    git clone <repository-url>
    cd code_switch
  2. 安装依赖

    npm install

使用方法

启动服务器

启动代理服务器:

npm start

开发模式(支持自动重启):

npm run dev

服务器默认将在端口 4000 上启动,并监听 127.0.0.1

  • 代理地址: http://127.0.0.1:4000
  • Web 界面: http://127.0.0.1:4000
  • API 端点: http://127.0.0.1:4000/api

配置客户端

将您的 LLM 客户端(例如 OpenAI SDK、LangChain 或直接 HTTP 调用)指向代理地址,而不是官方 API 端点。

示例 (OpenAI SDK):

const OpenAI = require('openai');

const openai = new OpenAI({
  apiKey: 'your-api-key', // 使用您的真实 API Key
  baseURL: 'http://127.0.0.1:4000' // 指向代理
});

示例 (Curl):

curl http://127.0.0.1:4000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-..." \
  -d 
    "{
    "model": "gpt-4",
    "messages": [{"role": "user", "content": "你好!"}]
  }"

配置

应用使用 config.json 文件来管理行为。如果文件不存在,首次运行时会自动创建默认配置。

结构

配置按 Format (格式) 组织。一个“格式”定义了请求如何被映射以及发送到哪里。

{
  "currentFormat": "anthropic",
  "proxyPort": 4000,
  "formats": {
    "anthropic": {
      "mapping": {
        "haiku": "haiku",
        "sonnet": "sonnet"
      },
      "targets": {
        "haiku": { "endpoint": "https://api.anthropic.com" },
        "sonnet": { "endpoint": "https://api.anthropic.com" }
      }
    },
    "openai": { ... }
  }
}
  • currentFormat: 当前激活的提供商格式(例如 anthropic, openai)。
  • mapping: 将请求的模型名称(例如 haiku)映射到目标 key。
  • targets: 定义目标 key 的端点和可选的认证信息。

Pass-Through (透传)

如果请求的模型不在 mapping 中,代理将:

  1. 自动创建一个“透传”映射。
  2. 将请求路由到当前格式的默认端点。
  3. 将此新映射保存到 config.json 以供将来使用。

项目结构

  • src/server.js: 主入口点和 Express 应用设置。
  • src/proxy-handler.js: 请求拦截、修改和转发的核心逻辑。
  • src/config-manager.js: 管理配置加载、保存和格式切换。
  • src/storage.js: 处理基于文件的日志记录到 logs/ 目录。
  • public/: Web 界面的静态文件。

更多文档

更详细的文档位于 docs/ 目录,包括:

许可证

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published