发帖
 找回密码
 立即注册
搜索
6 3 0
教程文档 47 6 6 小时前

这次分享一个直接用 API 免费(什么?API 要花钱?)用 CC 的食用方式~

d4ed2b89a2f832836512f57289d79491e6568df1.webp

6b3bef161753e22e580e91a47459cad0abedc836.webp

先说用法

git clone https://github.com/chachako/freecc.git
cd freecc
curl -LsSf https://astral.sh/uv/install.sh | sh # 如果已经装了 uv 就忽略
uv venv
uv sync
cp .env.example .env
code .env # 或者其他编辑器

有两种 BIG_MODEL_SMALL_MODEL_
分别是 CC 用来正式请求的 sonnet 和用来辅助请求的 haiku

填你自己的 API_KEYAPI_BASESMALL_MODEL 记得用便宜快速的,比如 deepseek-v3,不然小心账单爆炸)
如果你用的是基于 OpenAI API 格式的 API Key,保持 BIG_MODEL_PROVIDER 为 “openai”

运行 claude & Enjoy

uv run uvicorn server:app --host 127.0.0.1 --port 8082 --reload
# 运行 claude & Enjoy
export ANTHROPIC_BASE_URL=http://localhost:8082 && claude

注意!!!

确保你的 API 支持 Function Call,不然 CC 就只是一个聊天客户端了,很多第三方 API 并不支持工具函数调用,这一点需要清楚

不过也不是没有解决办法,可以通过 prompt 让 Gemini 以特定的格式输出调用,类似于 RooCode 的 System Prompt 让 AI 输出固定 XML 标签格式的方式。不过这块的调试比较麻烦。

完全用 Gemini 代理 Claude Code 的请求后明显能感觉到架构之类的工作做的更好了,唯一缺点就是 Gemini 在调用工具方面很差劲…
不过,在 CLAUDE.md 里面简单加几句指令后情况有所缓解:

# CLAUDE.md

## 严格遵循的指令

你必须在每次对话前**仔细**阅读你的内部规则,这很重要,否则整个工作流程都无法继续。

请在每次对话开始之前,调用 TodoRead 检查是否存在未完成的任务。当一个任务完成后,必须在回答结束前调用 TodoWrite 更新任务状态。

仔细理解用户的意图,如果它满足你内部规则中的 Tool 条件,强烈要求你调用合适的 Tool。

看了一下 CC 的原始请求,发现 prompt 里面做了大量的 example 举例,由于模型之间存在差异,我怀疑 Gemini 这种超长上下文窗口的模型会不会因此反而更容易理解错重点和产生幻觉?

不确定如果单独为 Gemini 定制一套 System Prompt 会不会有奇效…

另外 CC 是真的成本杀手

(等一个支持 Function Call 的 AI Studio 2api 😍

),每次输入框输入字都会调用小模型 haiku 先让 AI 检查输入,后台似乎也会发送辅助请求

96ac27c690f73fc332e53b1becd25f1747f87d0f.webp

──── 3人觉得很赞 ────

使用道具 举报

gemini调用工具真的太懒了
为什么我调用gemini会默认去调用vertex?明明我配置的是gemini
学习并点赞

明天试下,看看公益的API能用不,我还没试过claude code好用不
为啥一直报错。
用的第三方免费gemini接口
  1. 00:25:35 - LiteLLM:DEBUG: litellm_logging.py:1932 - Logging Details LiteLLM-Failure Call: []
  2. 2025-06-24 00:25:35,738 - ERROR - Error processing request: {
  3.   "error": "litellm.APIError: APIError: OpenAIException - 'str' object has no attribute 'model_dump'",
  4.   "type": "APIError",
  5.   "traceback": "Traceback (most recent call last):\n  File "/root/dev/projects/freecc/.venv/lib/python3.10/site-packages/litellm/llms/openai/openai.py", line 800, in acompletion\n    stringified_response = response.model_dump()\nAttributeError: 'str' object has no attribute 'model_dump'\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File "/root/dev/projects/freecc/.venv/lib/python3.10/site-packages/litellm/main.py", line 471, in acompletion\n    response = await init_response\n  File "/root/dev/projects/freecc/.venv/lib/python3.10/site-packages/litellm/llms/openai/openai.py", line 841, in acompletion\n    raise OpenAIError(\nlitellm.llms.openai.common_utils.OpenAIError: 'str' object has no attribute 'model_dump'\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File "/root/dev/projects/freecc/server.py", line 1022, in create_message\n    litellm_response = await litellm.acompletion(**litellm_request)\n  File "/root/dev/projects/freecc/.venv/lib/python3.10/site-packages/litellm/utils.py", line 1441, in wrapper_async\n    raise e\n  File "/root/dev/projects/freecc/.venv/lib/python3.10/site-packages/litellm/utils.py", line 1300, in wrapper_async\n    result = await original_function(*args, **kwargs)\n  File "/root/dev/projects/freecc/.venv/lib/python3.10/site-packages/litellm/main.py", line 490, in acompletion\n    raise exception_type(\n  File "/root/dev/projects/freecc/.venv/lib/python3.10/site-packages/litellm/litellm_core_utils/exception_mapping_utils.py", line 2214, in exception_type\n    raise e\n  File "/root/dev/projects/freecc/.venv/lib/python3.10/site-packages/litellm/litellm_core_utils/exception_mapping_utils.py", line 455, in exception_type\n    raise APIError(\nlitellm.exceptions.APIError: litellm.APIError: APIError: OpenAIException - 'str' object has no attribute 'model_dump'\n",
  6.   "message": "litellm.APIError: APIError: OpenAIException - 'str' object has no attribute 'model_dump'",
  7.   "status_code": 500,
  8.   "llm_provider": "openai",
  9.   "model": "openai/gemini-2.5-flash-preview-05-20"
  10. }
复制代码



6 小时前
davie67 发表于 2025-6-24 09:53
为啥一直报错。
用的第三方免费gemini接口

把 .env 里的 LOG_REQUEST_BODY=“true” 开开看看
您需要登录后才可以回帖 立即登录
高级模式