mirror of
https://github.com/router-for-me/CLIProxyAPIPlus.git
synced 2026-03-21 16:40:22 +00:00
Merge branch 'main' into dev
This commit is contained in:
@@ -6,24 +6,14 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/tidwall/gjson"
|
"github.com/tidwall/gjson"
|
||||||
"github.com/tidwall/sjson"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ConvertCodexResponseToOpenAIResponses converts OpenAI Chat Completions streaming chunks
|
// ConvertCodexResponseToOpenAIResponses converts OpenAI Chat Completions streaming chunks
|
||||||
// to OpenAI Responses SSE events (response.*).
|
// to OpenAI Responses SSE events (response.*).
|
||||||
|
|
||||||
func ConvertCodexResponseToOpenAIResponses(ctx context.Context, modelName string, originalRequestRawJSON, requestRawJSON, rawJSON []byte, param *any) []string {
|
func ConvertCodexResponseToOpenAIResponses(_ context.Context, _ string, _, _, rawJSON []byte, _ *any) []string {
|
||||||
if bytes.HasPrefix(rawJSON, []byte("data:")) {
|
if bytes.HasPrefix(rawJSON, []byte("data:")) {
|
||||||
rawJSON = bytes.TrimSpace(rawJSON[5:])
|
rawJSON = bytes.TrimSpace(rawJSON[5:])
|
||||||
if typeResult := gjson.GetBytes(rawJSON, "type"); typeResult.Exists() {
|
|
||||||
typeStr := typeResult.String()
|
|
||||||
if typeStr == "response.created" || typeStr == "response.in_progress" || typeStr == "response.completed" {
|
|
||||||
if gjson.GetBytes(rawJSON, "response.instructions").Exists() {
|
|
||||||
instructions := gjson.GetBytes(originalRequestRawJSON, "instructions").String()
|
|
||||||
rawJSON, _ = sjson.SetBytes(rawJSON, "response.instructions", instructions)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
out := fmt.Sprintf("data: %s", string(rawJSON))
|
out := fmt.Sprintf("data: %s", string(rawJSON))
|
||||||
return []string{out}
|
return []string{out}
|
||||||
}
|
}
|
||||||
@@ -32,17 +22,12 @@ func ConvertCodexResponseToOpenAIResponses(ctx context.Context, modelName string
|
|||||||
|
|
||||||
// ConvertCodexResponseToOpenAIResponsesNonStream builds a single Responses JSON
|
// ConvertCodexResponseToOpenAIResponsesNonStream builds a single Responses JSON
|
||||||
// from a non-streaming OpenAI Chat Completions response.
|
// from a non-streaming OpenAI Chat Completions response.
|
||||||
func ConvertCodexResponseToOpenAIResponsesNonStream(_ context.Context, modelName string, originalRequestRawJSON, requestRawJSON, rawJSON []byte, _ *any) string {
|
func ConvertCodexResponseToOpenAIResponsesNonStream(_ context.Context, _ string, _, _, rawJSON []byte, _ *any) string {
|
||||||
rootResult := gjson.ParseBytes(rawJSON)
|
rootResult := gjson.ParseBytes(rawJSON)
|
||||||
// Verify this is a response.completed event
|
// Verify this is a response.completed event
|
||||||
if rootResult.Get("type").String() != "response.completed" {
|
if rootResult.Get("type").String() != "response.completed" {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
responseResult := rootResult.Get("response")
|
responseResult := rootResult.Get("response")
|
||||||
template := responseResult.Raw
|
return responseResult.Raw
|
||||||
if responseResult.Get("instructions").Exists() {
|
|
||||||
instructions := gjson.GetBytes(originalRequestRawJSON, "instructions").String()
|
|
||||||
template, _ = sjson.Set(template, "instructions", instructions)
|
|
||||||
}
|
|
||||||
return template
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user