Cherry Studio API完整参考手册(实操版)

Cherry Studio API完整参考手册(实操版)

Cherry Studio 是一款功能强大的桌面客户端,核心优势在于支持多类大语言模型(LLM)提供商接入,为开发者提供统一的API接口,无需单独适配不同AI服务的接口规范,大幅降低集成成本。本文基于Cherry Studio最新版本,整合完整API参考、安装配置、实操示例、错误处理及最佳实践,全程贴合开发者实际使用场景,既是入门指南,也是日常开发的实用参考手册。

本文档适配所有支持Cherry Studio的操作系统(Windows、Mac、Linux),所有代码示例可直接复制使用,仅需替换对应密钥及参数,适合各类技术水平的开发者快速上手。

一、概述与核心功能特性

1.1 核心定位

Cherry Studio 作为桌面客户端,核心价值是"统一AI服务入口"------开发者通过其提供的标准化API,可快速访问DeepSeek、OpenAI、Anthropic等多家厂商的大语言模型,无需关注不同厂商接口的差异,实现"一次集成,多模型复用"。

项目地址:https://gitcode.com/GitHub_Trending/ch/cherry-studio,可从该地址获取最新版本客户端及源码。

1.2 核心功能特性(附支持状态)

Cherry Studio 的功能模块按"已支持""开发中"分类,开发者可根据需求规划集成方案,具体如下表所示:

| 功能模块 | 支持状态 | 详细描述 |

| --- | --- | --- |

| 多LLM提供商集成 | ✅ 已支持 | 提供统一API接口,可接入DeepSeek、OpenAI、Anthropic等主流厂商,无需单独适配 |

| DeepSeek-R1支持 | ✅ 已支持 | 深度集成DeepSeek-R1模型,可直接通过API调用该模型完成对话生成等操作 |

| 对话管理 | ✅ 已支持 | 自动维护多轮对话上下文,无需开发者手动处理会话记忆,提升开发效率 |

| 流式响应 | ✅ 已支持 | 支持实时流式文本生成,可实现"边生成边展示"的交互效果,优化用户体验 |

| 文件处理 | 🔄 开发中 | 后续将支持文档上传、解析与分析功能,目前暂不开放相关API |

| 插件系统 | 🔄 开发中 | 将支持插件扩展,开发者可通过插件新增功能,目前暂不支持自定义插件集成 |

二、快速开始:安装与基础配置(3步上手)

Cherry Studio 的安装与配置流程极简,无需复杂环境依赖,完成以下3步即可启动服务并调用API,适合新手快速入门。

2.1 步骤1:安装Cherry Studio桌面客户端

  1. 访问Cherry Studio官方项目地址或官方网站,下载对应操作系统的最新版本客户端(Windows可下载exe安装包,Mac可下载dmg镜像);
  2. 双击安装包,按照引导完成安装(默认安装路径即可,无需手动修改);
  3. 安装完成后,桌面将生成快捷方式,双击启动客户端,进入服务配置环节。

2.2 步骤2:启动服务(核心指令)

启动Cherry Studio服务需通过命令行执行指令,指定端口和API密钥(自定义密钥,用于后续API认证),具体指令如下:

复制代码
cherry-studio start --port 8080 --api-key your-api-key

参数说明:

  • --port 8080:指定服务运行端口,默认端口为8080,若该端口被占用,可替换为其他空闲端口(如8081、9000);
  • --api-key your-api-key:自定义API认证密钥,后续调用所有API时需携带该密钥,建议设置复杂密钥,提升安全性;
  • 补充:若启动失败,可检查端口是否被占用,或重新安装客户端重试。

2.3 步骤3:基础请求示例(JavaScript)

服务启动后,可通过简单的API请求测试服务可用性,以下是JavaScript语言的基础聊天请求示例,可直接复制使用(替换your-api-key即可):

复制代码
// JavaScript示例:调用聊天补全接口

const API_BASE = 'http://localhost:8080/api/v1';



async function chatWithAI(message) {

  const response = await fetch(`${API_BASE}/chat/completions`, {

    method: 'POST',

    headers: {

      'Content-Type': 'application/json',

      'Authorization': 'Bearer your-api-key' // 替换为启动服务时设置的API密钥

    },

    body: JSON.stringify({

      model: 'deepseek-r1', // 指定调用的模型,此处以DeepSeek-R1为例

      messages: [{ role: 'user', content: message }], // 对话内容,user表示用户输入

      stream: false // 是否开启流式响应,false表示同步响应

    })

  });



  return await response.json(); // 返回AI响应结果

}



// 调用函数测试

chatWithAI('Hello, Cherry Studio!')

  .then(result => console.log('AI响应:', result))

  .catch(error => console.error('请求失败:', error));

运行说明:将上述代码保存为.js文件,通过node命令运行,若控制台输出AI响应结果,说明服务启动正常,API可正常调用。

三、核心API端点参考(重点必看)

Cherry Studio 提供标准化API端点,所有请求均需携带认证信息,核心支持3类常用端点:聊天补全、模型列表、流式聊天,以下是详细参考(含请求参数、响应结构)。

3.1 通用认证方式

所有API请求都必须在请求头(Header)中包含认证信息,否则将返回401认证失败错误,认证格式如下:

复制代码
Authorization: Bearer your-api-key

说明:your-api-key 即为启动服务时设置的API密钥,大小写敏感,请勿泄露或误写。

3.2 端点1:聊天补全接口(最常用)

用于调用指定模型生成对话响应,支持多轮对话,适用于大部分聊天、问答类场景。

  • 端点地址:POST /api/v1/chat/completions

  • 请求方式:POST

  • 请求参数(JSON格式,必填参数标注):

    {

    复制代码
    "model": "string (必填)", // 模型ID,如deepseek-r1、gpt-4
    
    "messages": [ // 对话历史,必填,支持多轮
    
      {
    
        "role": "system|user|assistant", // 角色,system(系统提示)、user(用户)、assistant(AI)
    
        "content": "string" // 角色对应的内容
    
      }
    
    ],
    
    "temperature": 0.7, // 可选,生成多样性,0-1之间,值越大越随机
    
    "max_tokens": 2048, // 可选,最大生成 tokens 数,默认2048
    
    "top_p": 1.0, // 可选,采样阈值,0-1之间,无需修改默认值即可
    
    "stream": false, // 可选,是否开启流式响应,默认false
    
    "provider": "deepseek|openai|anthropic" // 可选,指定模型提供商,默认自动匹配模型所属厂商

    }

  • 响应结构(JSON格式,成功返回):

    {

    复制代码
    "id": "chatcmpl-123", // 对话ID,唯一标识
    
    "object": "chat.completion", // 对象类型,固定值
    
    "created": 1677652288, // 创建时间戳(秒)
    
    "model": "deepseek-r1", // 调用的模型ID
    
    "choices": [ // 响应结果列表,默认返回1个结果
    
      {
    
        "index": 0, // 索引,默认0
    
        "message": {
    
          "role": "assistant", // 角色,固定为assistant
    
          "content": "Hello! How can I help you today?" // AI生成的响应内容
    
        },
    
        "finish_reason": "stop" // 结束原因,stop表示正常结束
    
      }
    
    ],
    
    "usage": { // tokens 消耗统计
    
      "prompt_tokens": 9, // 提示词 tokens 数
    
      "completion_tokens": 12, // 生成内容 tokens 数
    
      "total_tokens": 21 // 总 tokens 数
    
    }

    }

3.3 端点2:模型列表接口

用于查询当前Cherry Studio支持的所有模型列表,可快速获取模型ID、所属厂商等信息,方便开发者选择合适的模型。

  • 端点地址:GET /api/v1/models

  • 请求方式:GET

  • 请求参数:无(仅需携带认证头)

  • 响应示例(JSON格式):

    {

    复制代码
    "object": "list", // 对象类型,固定为list
    
    "data": [
    
      {
    
        "id": "deepseek-r1", // 模型ID,调用时需填写该值
    
        "object": "model", // 子对象类型,固定为model
    
        "created": 1677652288, // 模型添加时间戳
    
        "owned_by": "deepseek", // 模型所属厂商
    
        "permissions": [], // 权限列表,默认空
    
        "root": "deepseek-r1", // 根模型ID,与id一致
    
        "parent": null // 父模型,无父模型则为null
    
      },
    
      {
    
        "id": "gpt-4",
    
        "object": "model",
    
        "created": 1677652288,
    
        "owned_by": "openai",
    
        "permissions": [],
    
        "root": "gpt-4",
    
        "parent": null
    
      }
    
    ]

    }

3.4 端点3:流式聊天接口

与普通聊天补全接口功能一致,核心区别在于开启流式响应(stream=true),可实现实时返回生成内容,适用于需要即时交互的场景(如在线聊天界面)。

  • 端点地址:POST /api/v1/chat/completions(与普通聊天接口一致,通过stream参数区分)

  • 请求方式:POST

  • 核心差异:请求参数中stream设为true,其他参数与普通聊天接口一致;

  • 使用示例(JavaScript):

    async function streamChat(message) {

    复制代码
    const response = await fetch(`${API_BASE}/chat/completions`, {
    
      method: 'POST',
    
      headers: {
    
        'Content-Type': 'application/json',
    
        'Authorization': 'Bearer your-api-key'
    
      },
    
      body: JSON.stringify({
    
        model: 'deepseek-r1',
    
        messages: [{ role: 'user', content: message }],
    
        stream: true // 开启流式响应
    
      })
    
    });
    
    
    
    const reader = response.body.getReader();
    
    const decoder = new TextDecoder();
    
    
    
    while (true) {
    
      const { done, value } = await reader.read();
    
      if (done) break; // 流式响应结束,退出循环
    
    
    
      const chunk = decoder.decode(value);
    
      const lines = chunk.split('\n'); // 按行解析流式数据
    
    
    
      for (const line of lines) {
    
        if (line.startsWith('data: ')) {
    
          const data = line.slice(6); // 截取data: 后面的内容
    
          if (data === '[DONE]') break; // 接收完毕,退出循环

    const parsed = JSON.parse(data);

    复制代码
          // 打印实时生成的内容(可替换为页面渲染逻辑)
    
          console.log(parsed.choices[0].delta.content || '');
    
        }
    
      }
    
    }

    }

    // 调用流式聊天函数

    streamChat('请详细介绍Cherry Studio的核心功能');

四、配置管理(config.yaml + 环境变量)

Cherry Studio 支持通过配置文件和环境变量两种方式管理服务参数,可根据实际部署需求灵活配置,以下是详细说明。

4.1 配置文件结构(config.yaml)

配置文件位于Cherry Studio安装目录下,名为config.yaml,可手动修改参数,重启服务后生效,核心结构如下(含注释说明):

复制代码
# config.yaml 核心配置

api:

  port: 8080 # 服务端口,与启动指令中的--port一致,指令优先级高于配置文件

  cors_origins: ["http://localhost:3000"] # 允许跨域的地址,前端项目需添加对应地址

  rate_limit: 1000 # 接口请求频率限制,每分钟最多1000次请求

providers: # 模型提供商配置,需填写对应厂商的API密钥

  deepseek:

    api_key: ${DEEPSEEK_API_KEY} # 环境变量引用,也可直接填写密钥字符串

    base_url: "https://api.deepseek.com" # DeepSeek接口地址,无需修改



  openai:

    api_key: ${OPENAI_API_KEY} # OpenAI API密钥,需自行申请



  anthropic:

    api_key: ${ANTHROPIC_API_KEY} # Anthropic API密钥,需自行申请

logging: # 日志配置

  level: "info" # 日志级别,可选info、warn、error、debug

  file: "cherry-studio.log" # 日志文件名称,默认存储在安装目录下

4.2 环境变量配置

为避免密钥明文暴露在配置文件中,推荐通过环境变量配置各类密钥,Cherry Studio支持的环境变量如下,可根据需要配置:

| 环境变量名称 | 详细描述 | 默认值 |

| --- | --- | --- |

| CHERRY_API_KEY | Cherry Studio服务认证密钥(启动服务时的--api-key) | 无(必填) |

| DEEPSEEK_API_KEY | DeepSeek模型提供商的API密钥,需自行申请 | 无 |

| OPENAI_API_KEY | OpenAI模型提供商的API密钥,需自行申请 | 无 |

| ANTHROPIC_API_KEY | Anthropic模型提供商的API密钥,需自行申请 | 无 |

| CHERRY_PORT | Cherry Studio服务运行端口,与启动指令--port一致 | 8080 |

| CHERRY_LOG_LEVEL | 日志级别,可选info、warn、error、debug | info |

五、错误处理与故障排除(避坑必看)

开发过程中调用API可能出现各类错误,本节整理了常见错误代码、响应格式及故障排查方法,帮助开发者快速定位并解决问题。

5.1 错误响应格式

所有API错误均返回统一格式的JSON响应,包含错误代码、错误信息和错误类型,便于解析处理:

复制代码
{

  "error": {

    "code": "invalid_api_key", // 错误代码,关键定位依据

    "message": "Invalid API key provided", // 错误详细信息

    "type": "invalid_request_error" // 错误类型

  }

}

5.2 常见错误代码及解决方案

| 错误代码 | HTTP状态码 | 错误描述 | 解决方案 |

| --- | --- | --- | --- |

| invalid_api_key | 401 | API密钥无效或未携带 | 1. 检查请求头中Authorization是否携带正确密钥;2. 确认密钥与启动服务时的--api-key一致;3. 检查密钥大小写是否正确 |

| rate_limit_exceeded | 429 | 请求频率超过限制 | 1. 优化代码,减少请求频率;2. 调整config.yaml中的rate_limit参数(需重启服务);3. 实现请求重试机制,避免集中请求 |

| model_not_found | 404 | 指定的模型不存在 | 1. 调用GET /api/v1/models接口,查询支持的模型ID;2. 确认模型ID填写正确,无拼写错误;3. 检查模型提供商是否已配置API密钥 |

| provider_unavailable | 503 | 模型提供商服务不可用 | 1. 检查对应厂商的API密钥是否有效;2. 访问厂商官网,确认服务是否正常;3. 切换其他可用模型 |

| invalid_parameters | 400 | 请求参数格式错误或缺失必填参数 | 1. 检查请求参数是否完整(如model、messages是否填写);2. 确认参数格式符合JSON规范;3. 检查参数值是否符合要求(如temperature范围0-1) |

5.3 常见故障排查方法

故障1:服务启动失败

可能原因:端口被占用、客户端安装不完整、命令行指令错误;

解决方案:1. 更换服务端口(--port 8081);2. 重新安装Cherry Studio客户端;3. 检查指令拼写,确保指令格式正确。

故障2:API请求连接超时

可能原因:服务未启动、网络连接异常、防火墙拦截端口;

解决方案:1. 确认Cherry Studio服务已正常启动;2. 检查本地网络连接,确保可访问localhost;3. 关闭防火墙或开放对应服务端口。

故障3:流式响应无返回

可能原因:stream参数未设为true、模型响应过慢、代码解析逻辑错误;

解决方案:1. 确认请求参数中stream: true;2. 更换响应速度较快的模型(如deepseek-r1);3. 检查流式解析代码,确保未遗漏data: 前缀的处理。

故障4:日志分析方法

可通过日志文件定位详细错误信息,常用日志操作指令(bash):

复制代码
# 查看实时日志(实时监控服务运行状态)

tail -f cherry-studio.log



# 搜索错误日志(定位具体错误原因)

grep "ERROR" cherry-studio.log



# 监控API性能(查看API调用耗时)

grep "API_CALL" cherry-studio.log | awk '{print $NF}'

六、最佳实践(提升开发效率与稳定性)

结合实际开发场景,整理3个核心最佳实践,帮助开发者优化API调用逻辑,提升系统稳定性和开发效率。

6.1 实践1:连接池管理(避免频繁创建连接)

频繁创建和关闭HTTP连接会降低性能,建议使用连接池管理请求连接,以下是Node.js环境的连接池示例:

复制代码
// 建议使用连接池避免频繁创建连接

const { Pool } = require('pg');



const apiPool = new Pool({

  connectionString: process.env.DATABASE_URL,

  max: 20, // 最大连接数

  idleTimeoutMillis: 30000, // 空闲连接超时时间(30秒)

  connectionTimeoutMillis: 2000, // 连接超时时间(2秒)

});

6.2 实践2:请求重试机制(提升接口稳定性)

面对网络波动、服务临时不可用等场景,实现重试机制可提升接口调用成功率,以下是通用重试函数示例:

复制代码
async function withRetry(fn, maxRetries = 3) {

  for (let i = 0; i < maxRetries; i++) {

    try {

      return await fn(); // 执行API请求函数

    } catch (error) {

      if (i === maxRetries - 1) throw error; // 最后一次重试失败,抛出错误

      // 指数退避重试,每次重试间隔翻倍(1秒、2秒、4秒...)

      await new Promise(resolve => setTimeout(resolve, 1000 * Math.pow(2, i)));

    }

  }

}



// 使用示例:调用聊天接口并添加重试机制

withRetry(() => chatWithAI('查询今天的天气'))

  .then(result => console.log(result))

  .catch(error => console.error('最终请求失败:', error));

6.3 实践3:性能监控(实时掌握API运行状态)

添加API调用性能监控,可实时掌握接口响应时间、成功率等指标,便于及时优化,示例如下:

复制代码
// 添加性能监控

const startTime = Date.now();

try {

  const result = await chatWithAI(message);

  const duration = Date.now() - startTime; // 计算API调用耗时



  console.log(`API调用耗时: ${duration}ms`);

  monitor.recordApiCall('success', duration); // 记录成功调用(需自行实现monitor)

} catch (error) {

  monitor.recordApiCall('error', Date.now() - startTime); // 记录失败调用

  throw error;

}

七、扩展功能:WebSocket实时通信与自定义提供商

7.1 WebSocket实时通信

Cherry Studio 支持WebSocket连接,可实现更高效的实时通信(比流式响应更轻量),适用于实时聊天、消息推送等场景,核心使用示例如下:

复制代码
// WebSocket连接建立

const ws = new WebSocket('ws://localhost:8080/ws/chat');



ws.onopen = () => {

  console.log('WebSocket连接已建立');

  // 连接成功后,发送认证信息

  ws.send(JSON.stringify({

    type: 'auth',

    api_key: 'your-api-key'

  }));

};



ws.onmessage = (event) => {

  const data = JSON.parse(event.data);

  // 接收AI返回的消息

  if (data.type === 'message') {

    console.log('收到消息:', data.content);

  }

};



// 发送聊天消息

ws.send(JSON.stringify({

  type: 'message',

  model: 'deepseek-r1',

  content: 'Hello, WebSocket!'}

));

WebSocket消息格式(JSON):

复制代码
{

  "type": "message|error|ping|pong", // 消息类型

  "content": "消息内容", // 消息主体

  "timestamp": 1677652288, // 时间戳

 "message_id": "msg_123" // 消息唯一ID

}

7.2 自定义提供商集成

若需接入Cherry Studio未默认支持的模型提供商,可通过自定义提供商功能实现,核心示例如下(JavaScript):

复制代码
// 自定义模型提供商类

class CustomProvider {

  constructor(config) {

    this.config = config; // 配置信息(如API密钥、接口地址)

  }



  // 实现聊天补全逻辑

  async chatCompletions(params) {

    // 自定义调用逻辑(对接第三方模型接口)

    return {

      id: `chatcmpl-${Date.now()}`,

      choices: [{

        message: {

          role: 'assistant',

          content: 'Custom response' // 自定义响应内容

        }

      }]

    };

  }

}



// 注册自定义提供商到Cherry Studio

cherryStudio.registerProvider('custom', CustomProvider);

说明:自定义提供商需实现chatCompletions方法,确保返回格式与Cherry Studio标准响应一致,注册后即可通过provider: "custom"调用该提供商的模型。

八、版本历史与技术支持

8.1 版本历史

| 版本号 | 发布日期 | 主要变更 |

| --- | --- | --- |

| v1.0.0 | 2024-01-15 | 初始版本发布,支持基础聊天补全、模型列表接口 |

| v1.1.0 | 2024-02-01 | 新增流式响应支持,优化API响应速度 |

| v1.2.0 | 2024-03-15 | 多提供商集成优化,新增WebSocket实时通信 |

8.2 技术支持

如需技术支持或报告问题,请提供以下信息,以便快速定位并解决问题:

  • Cherry Studio 版本号(可通过客户端关于页面查看);
  • 操作系统和运行环境信息(如Windows 11、Node.js 16.x);
  • 详细的错误日志(可从cherry-studio.log中提取);
  • 问题复现步骤(清晰描述如何操作出现的问题)。

注意:本文档基于Cherry Studio最新版本编写,API接口可能随版本更新而变化。建议定期查看官方项目地址,获取最新文档和版本更新信息。

九、总结

Cherry Studio 的核心价值在于"统一AI接口入口",通过标准化的API设计,帮助开发者快速集成多厂商大语言模型,无需关注不同厂商接口的差异,大幅降低开发成本。本文档覆盖了从安装配置、API调用、错误处理到最佳实践的全流程内容,所有代码示例可直接复制使用,适合各类开发者快速上手。

随着Cherry Studio的不断更新,后续将支持文件处理、插件系统等更多功能,开发者可持续关注官方动态,充分发挥其在AI集成开发中的优势,提升开发效率和产品体验。

本文由mdnice多平台发布

相关推荐
Moment15 小时前
Vibe Coding 时代,到底该选什么样的工具来提升效率❓❓❓
前端·后端·github
Victor35615 小时前
MongoDB(27)什么是文本索引?
后端
可夫小子16 小时前
OpenClaw基础-3-telegram机器人配置与加入群聊
后端
IT_陈寒16 小时前
SpringBoot性能飙升200%?这5个隐藏配置你必须知道!
前端·人工智能·后端
aiopencode18 小时前
使用 Ipa Guard 命令行版本将 IPA 混淆接入自动化流程
后端·ios
掘金者阿豪18 小时前
Kavita+cpolar 打造随身数字书房,让资源不再混乱,通勤 、出差都能随心读。
后端
心之语歌18 小时前
Spring Security api接口 认证放行
后端
用户83562907805118 小时前
Python 实现 PPT 转 HTML
后端·python
0xDevNull18 小时前
MySQL索引进阶用法
后端·mysql
舒一笑18 小时前
程序员效率神器:一文掌握 tmux(服务器开发必备工具)
运维·后端·程序员