mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-03 04:50:52 +08:00
@@ -23,6 +23,7 @@ type geminiToResponsesState struct {
|
|||||||
MsgIndex int
|
MsgIndex int
|
||||||
CurrentMsgID string
|
CurrentMsgID string
|
||||||
TextBuf strings.Builder
|
TextBuf strings.Builder
|
||||||
|
ItemTextBuf strings.Builder
|
||||||
|
|
||||||
// reasoning aggregation
|
// reasoning aggregation
|
||||||
ReasoningOpened bool
|
ReasoningOpened bool
|
||||||
@@ -189,6 +190,8 @@ func ConvertGeminiResponseToOpenAIResponses(_ context.Context, modelName string,
|
|||||||
partAdded, _ = sjson.Set(partAdded, "item_id", st.CurrentMsgID)
|
partAdded, _ = sjson.Set(partAdded, "item_id", st.CurrentMsgID)
|
||||||
partAdded, _ = sjson.Set(partAdded, "output_index", st.MsgIndex)
|
partAdded, _ = sjson.Set(partAdded, "output_index", st.MsgIndex)
|
||||||
out = append(out, emitEvent("response.content_part.added", partAdded))
|
out = append(out, emitEvent("response.content_part.added", partAdded))
|
||||||
|
st.ItemTextBuf.Reset()
|
||||||
|
st.ItemTextBuf.WriteString(t.String())
|
||||||
}
|
}
|
||||||
st.TextBuf.WriteString(t.String())
|
st.TextBuf.WriteString(t.String())
|
||||||
msg := `{"type":"response.output_text.delta","sequence_number":0,"item_id":"","output_index":0,"content_index":0,"delta":"","logprobs":[]}`
|
msg := `{"type":"response.output_text.delta","sequence_number":0,"item_id":"","output_index":0,"content_index":0,"delta":"","logprobs":[]}`
|
||||||
@@ -250,20 +253,24 @@ func ConvertGeminiResponseToOpenAIResponses(_ context.Context, modelName string,
|
|||||||
finalizeReasoning()
|
finalizeReasoning()
|
||||||
// Close message output if opened
|
// Close message output if opened
|
||||||
if st.MsgOpened {
|
if st.MsgOpened {
|
||||||
|
fullText := st.ItemTextBuf.String()
|
||||||
done := `{"type":"response.output_text.done","sequence_number":0,"item_id":"","output_index":0,"content_index":0,"text":"","logprobs":[]}`
|
done := `{"type":"response.output_text.done","sequence_number":0,"item_id":"","output_index":0,"content_index":0,"text":"","logprobs":[]}`
|
||||||
done, _ = sjson.Set(done, "sequence_number", nextSeq())
|
done, _ = sjson.Set(done, "sequence_number", nextSeq())
|
||||||
done, _ = sjson.Set(done, "item_id", st.CurrentMsgID)
|
done, _ = sjson.Set(done, "item_id", st.CurrentMsgID)
|
||||||
done, _ = sjson.Set(done, "output_index", st.MsgIndex)
|
done, _ = sjson.Set(done, "output_index", st.MsgIndex)
|
||||||
|
done, _ = sjson.Set(done, "text", fullText)
|
||||||
out = append(out, emitEvent("response.output_text.done", done))
|
out = append(out, emitEvent("response.output_text.done", done))
|
||||||
partDone := `{"type":"response.content_part.done","sequence_number":0,"item_id":"","output_index":0,"content_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":""}}`
|
partDone := `{"type":"response.content_part.done","sequence_number":0,"item_id":"","output_index":0,"content_index":0,"part":{"type":"output_text","annotations":[],"logprobs":[],"text":""}}`
|
||||||
partDone, _ = sjson.Set(partDone, "sequence_number", nextSeq())
|
partDone, _ = sjson.Set(partDone, "sequence_number", nextSeq())
|
||||||
partDone, _ = sjson.Set(partDone, "item_id", st.CurrentMsgID)
|
partDone, _ = sjson.Set(partDone, "item_id", st.CurrentMsgID)
|
||||||
partDone, _ = sjson.Set(partDone, "output_index", st.MsgIndex)
|
partDone, _ = sjson.Set(partDone, "output_index", st.MsgIndex)
|
||||||
|
partDone, _ = sjson.Set(partDone, "part.text", fullText)
|
||||||
out = append(out, emitEvent("response.content_part.done", partDone))
|
out = append(out, emitEvent("response.content_part.done", partDone))
|
||||||
final := `{"type":"response.output_item.done","sequence_number":0,"output_index":0,"item":{"id":"","type":"message","status":"completed","content":[{"type":"output_text","text":""}],"role":"assistant"}}`
|
final := `{"type":"response.output_item.done","sequence_number":0,"output_index":0,"item":{"id":"","type":"message","status":"completed","content":[{"type":"output_text","text":""}],"role":"assistant"}}`
|
||||||
final, _ = sjson.Set(final, "sequence_number", nextSeq())
|
final, _ = sjson.Set(final, "sequence_number", nextSeq())
|
||||||
final, _ = sjson.Set(final, "output_index", st.MsgIndex)
|
final, _ = sjson.Set(final, "output_index", st.MsgIndex)
|
||||||
final, _ = sjson.Set(final, "item.id", st.CurrentMsgID)
|
final, _ = sjson.Set(final, "item.id", st.CurrentMsgID)
|
||||||
|
final, _ = sjson.Set(final, "item.content.0.text", fullText)
|
||||||
out = append(out, emitEvent("response.output_item.done", final))
|
out = append(out, emitEvent("response.output_item.done", final))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user