From e0bff9f21220d1ad1d1c9af34e4cfe2ae14352df Mon Sep 17 00:00:00 2001 From: Luis Pater Date: Mon, 1 Sep 2025 10:28:29 +0800 Subject: [PATCH] Refactor translator packages for OpenAI Chat Completions - Renamed `openai` packages to `chat_completions` across translator modules. - Introduced `openai_responses_handlers` with handlers for `/v1/models` and OpenAI-compatible chat completions endpoints. - Updated constants and registry identifiers for OpenAI response type. - Simplified request/response conversions and added detailed retry/error handling. - Added `golang.org/x/crypto` for additional cryptographic functions. --- .../responses/cli_openai-responses_request.go | 19 +++++++++++++++++++ ...se.go => cli_openai-responses_response.go} | 0 .../gemini_openai-responses_request.go | 5 ----- 3 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 internal/translator/gemini-cli/openai/responses/cli_openai-responses_request.go rename internal/translator/gemini-cli/openai/responses/{gemini_openai-responses_response.go => cli_openai-responses_response.go} (100%) delete mode 100644 internal/translator/gemini-cli/openai/responses/gemini_openai-responses_request.go diff --git a/internal/translator/gemini-cli/openai/responses/cli_openai-responses_request.go b/internal/translator/gemini-cli/openai/responses/cli_openai-responses_request.go new file mode 100644 index 00000000..46421320 --- /dev/null +++ b/internal/translator/gemini-cli/openai/responses/cli_openai-responses_request.go @@ -0,0 +1,19 @@ +package responses + +import ( + . "github.com/luispater/CLIProxyAPI/internal/translator/gemini/openai/responses" + "github.com/tidwall/gjson" + "github.com/tidwall/sjson" +) + +func ConvertOpenAIResponsesRequestToGeminiCLI(modelName string, rawJSON []byte, stream bool) []byte { + modelResult := gjson.GetBytes(rawJSON, "model") + rawJSON = []byte(gjson.GetBytes(rawJSON, "request").Raw) + rawJSON, _ = sjson.SetBytes(rawJSON, "model", modelResult.String()) + if gjson.GetBytes(rawJSON, "systemInstruction").Exists() { + rawJSON, _ = sjson.SetRawBytes(rawJSON, "system_instruction", []byte(gjson.GetBytes(rawJSON, "systemInstruction").Raw)) + rawJSON, _ = sjson.DeleteBytes(rawJSON, "systemInstruction") + } + + return ConvertOpenAIResponsesRequestToGemini(modelName, rawJSON, stream) +} diff --git a/internal/translator/gemini-cli/openai/responses/gemini_openai-responses_response.go b/internal/translator/gemini-cli/openai/responses/cli_openai-responses_response.go similarity index 100% rename from internal/translator/gemini-cli/openai/responses/gemini_openai-responses_response.go rename to internal/translator/gemini-cli/openai/responses/cli_openai-responses_response.go diff --git a/internal/translator/gemini-cli/openai/responses/gemini_openai-responses_request.go b/internal/translator/gemini-cli/openai/responses/gemini_openai-responses_request.go deleted file mode 100644 index 6d4e740d..00000000 --- a/internal/translator/gemini-cli/openai/responses/gemini_openai-responses_request.go +++ /dev/null @@ -1,5 +0,0 @@ -package responses - -func ConvertOpenAIResponsesRequestToGeminiCLI(modelName string, rawJSON []byte, stream bool) []byte { - return nil -}