Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions dto/claude.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ type ClaudeMediaMessage struct {
Input any `json:"input,omitempty"`
Content any `json:"content,omitempty"`
ToolUseId string `json:"tool_use_id,omitempty"`
// redacted_thinking
Data string `json:"data,omitempty"`
}

func (c *ClaudeMediaMessage) SetText(s string) {
Expand Down
52 changes: 29 additions & 23 deletions dto/openai_response.go
Original file line number Diff line number Diff line change
Expand Up @@ -334,20 +334,23 @@ func (o *OpenAIResponsesResponse) GetSize() string {
}

type IncompleteDetails struct {
Reasoning string `json:"reasoning"`
Reason string `json:"reason,omitempty"`
}

type ResponsesOutput struct {
Type string `json:"type"`
ID string `json:"id"`
Status string `json:"status"`
Role string `json:"role"`
Content []ResponsesOutputContent `json:"content"`
Quality string `json:"quality"`
Size string `json:"size"`
CallId string `json:"call_id,omitempty"`
Name string `json:"name,omitempty"`
Arguments json.RawMessage `json:"arguments,omitempty"`
Type string `json:"type"`
ID string `json:"id"`
Status string `json:"status,omitempty"`
Role string `json:"role,omitempty"`
Content []ResponsesOutputContent `json:"content,omitempty"`
Quality string `json:"quality,omitempty"`
Size string `json:"size,omitempty"`
CallId string `json:"call_id,omitempty"`
Name string `json:"name,omitempty"`
Arguments json.RawMessage `json:"arguments,omitempty"`
Input string `json:"input,omitempty"`
Summary []ResponsesReasoningSummaryPart `json:"summary,omitempty"`
EncryptedContent string `json:"encrypted_content,omitempty"`
}

// ArgumentsString returns function call arguments in the string form expected by Chat Completions.
Expand Down Expand Up @@ -388,19 +391,22 @@ const (
ResponsesOutputTypeItemDone = "response.output_item.done"
)

// ResponsesStreamResponse 用于处理 /v1/responses 流式响应
type ResponsesStreamResponse struct {
Type string `json:"type"`
Response *OpenAIResponsesResponse `json:"response,omitempty"`
Delta string `json:"delta,omitempty"`
Item *ResponsesOutput `json:"item,omitempty"`
// - response.function_call_arguments.delta
// - response.function_call_arguments.done
OutputIndex *int `json:"output_index,omitempty"`
ContentIndex *int `json:"content_index,omitempty"`
SummaryIndex *int `json:"summary_index,omitempty"`
ItemID string `json:"item_id,omitempty"`
Part *ResponsesReasoningSummaryPart `json:"part,omitempty"`
Type string `json:"type"`
Response *OpenAIResponsesResponse `json:"response,omitempty"`
Delta string `json:"delta,omitempty"`
Item *ResponsesOutput `json:"item,omitempty"`
OutputIndex *int `json:"output_index,omitempty"`
ContentIndex *int `json:"content_index,omitempty"`
SummaryIndex *int `json:"summary_index,omitempty"`
AnnotationIndex *int `json:"annotation_index,omitempty"`
ItemID string `json:"item_id,omitempty"`
Part any `json:"part,omitempty"`
Text string `json:"text,omitempty"`
Arguments string `json:"arguments,omitempty"`
Input string `json:"input,omitempty"`
Annotation any `json:"annotation,omitempty"`
SequenceNumber int `json:"sequence_number"`
}

// GetOpenAIError 从动态错误类型中提取OpenAIError结构
Expand Down
9 changes: 7 additions & 2 deletions relay/channel/claude/adaptor.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,13 @@ func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relaycommon.Rela
}

func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *relaycommon.RelayInfo, request dto.OpenAIResponsesRequest) (any, error) {
// TODO implement me
return nil, errors.New("not implemented")
claudeReq, customToolNames, err := ConvertResponsesRequestToClaude(&request)
if err != nil {
return nil, err
}
// 无条件覆盖:retry 或 pass-through 路径下,前一次设置的 customToolNames 不应残留污染响应分支。
c.Set(customToolNamesContextKey, customToolNames)
return claudeReq, nil
}

func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInfo, requestBody io.Reader) (any, error) {
Expand Down
Loading
Loading