mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-03 04:50:52 +08:00
Add Codex load balancing documentation and refine JSON handling logic
- Updated README and README_CN to include a guide for configuring multiple account load balancing with CLI Proxy API. - Enhanced JSON handling in gemini translators by differentiating object and string outputs. - Added commented debug logging for Gemini CLI response conversion.
This commit is contained in:
23
README.md
23
README.md
@@ -430,6 +430,29 @@ export ANTHROPIC_MODEL=qwen3-coder-plus
|
|||||||
export ANTHROPIC_SMALL_FAST_MODEL=qwen3-coder-flash
|
export ANTHROPIC_SMALL_FAST_MODEL=qwen3-coder-flash
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Codex with multiple account load balancing
|
||||||
|
|
||||||
|
Start CLI Proxy API server, and then edit the `~/.codex/config.toml` and `~/.codex/auth.json` files.
|
||||||
|
|
||||||
|
config.toml:
|
||||||
|
```toml
|
||||||
|
model_provider = "cliproxyapi"
|
||||||
|
model = "gpt-5" # You can use any of the models that we support.
|
||||||
|
model_reasoning_effort = "high"
|
||||||
|
|
||||||
|
[model_providers.cliproxyapi]
|
||||||
|
name = "cliproxyapi"
|
||||||
|
base_url = "http://127.0.0.1:8317/v1"
|
||||||
|
wire_api = "responses"
|
||||||
|
```
|
||||||
|
|
||||||
|
auth.json:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"OPENAI_API_KEY": "sk-dummy"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Run with Docker
|
## Run with Docker
|
||||||
|
|
||||||
Run the following command to login (Gemini OAuth on port 8085):
|
Run the following command to login (Gemini OAuth on port 8085):
|
||||||
|
|||||||
22
README_CN.md
22
README_CN.md
@@ -424,6 +424,28 @@ export ANTHROPIC_MODEL=qwen3-coder-plus
|
|||||||
export ANTHROPIC_SMALL_FAST_MODEL=qwen3-coder-flash
|
export ANTHROPIC_SMALL_FAST_MODEL=qwen3-coder-flash
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Codex 多账户负载均衡
|
||||||
|
|
||||||
|
启动 CLI Proxy API 服务器, 修改 `~/.codex/config.toml` 和 `~/.codex/auth.json` 文件。
|
||||||
|
|
||||||
|
config.toml:
|
||||||
|
```toml
|
||||||
|
model_provider = "cliproxyapi"
|
||||||
|
model = "gpt-5" # 你可以使用任何我们支持的模型
|
||||||
|
model_reasoning_effort = "high"
|
||||||
|
|
||||||
|
[model_providers.cliproxyapi]
|
||||||
|
name = "cliproxyapi"
|
||||||
|
base_url = "http://127.0.0.1:8317/v1"
|
||||||
|
wire_api = "responses"
|
||||||
|
```
|
||||||
|
|
||||||
|
auth.json:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"OPENAI_API_KEY": "sk-dummy"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## 使用 Docker 运行
|
## 使用 Docker 运行
|
||||||
|
|
||||||
|
|||||||
@@ -10,5 +10,6 @@ import (
|
|||||||
func ConvertOpenAIResponsesRequestToGeminiCLI(modelName string, inputRawJSON []byte, stream bool) []byte {
|
func ConvertOpenAIResponsesRequestToGeminiCLI(modelName string, inputRawJSON []byte, stream bool) []byte {
|
||||||
rawJSON := bytes.Clone(inputRawJSON)
|
rawJSON := bytes.Clone(inputRawJSON)
|
||||||
rawJSON = ConvertOpenAIResponsesRequestToGemini(modelName, rawJSON, stream)
|
rawJSON = ConvertOpenAIResponsesRequestToGemini(modelName, rawJSON, stream)
|
||||||
|
// log.Debug(string(rawJSON))
|
||||||
return ConvertGeminiRequestToGeminiCLI(modelName, rawJSON, stream)
|
return ConvertGeminiRequestToGeminiCLI(modelName, rawJSON, stream)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,7 +109,11 @@ func ConvertOpenAIResponsesRequestToGemini(modelName string, inputRawJSON []byte
|
|||||||
// Parse output JSON string and set as response content
|
// Parse output JSON string and set as response content
|
||||||
if output != "" {
|
if output != "" {
|
||||||
outputResult := gjson.Parse(output)
|
outputResult := gjson.Parse(output)
|
||||||
functionResponse, _ = sjson.SetRaw(functionResponse, "functionResponse.response.content", outputResult.Raw)
|
if outputResult.IsObject() {
|
||||||
|
functionResponse, _ = sjson.SetRaw(functionResponse, "functionResponse.response.content", outputResult.String())
|
||||||
|
} else {
|
||||||
|
functionResponse, _ = sjson.Set(functionResponse, "functionResponse.response.content", outputResult.String())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
functionContent, _ = sjson.SetRaw(functionContent, "parts.-1", functionResponse)
|
functionContent, _ = sjson.SetRaw(functionContent, "parts.-1", functionResponse)
|
||||||
|
|||||||
Reference in New Issue
Block a user