mirror of
https://github.com/songquanpeng/one-api.git
synced 2025-10-17 08:38:24 +00:00
feat: add cohere support (#1355)
* support cohere * chore: tiny improvements --------- Co-authored-by: JustSong <songquanpeng@foxmail.com>
This commit is contained in:
147
relay/adaptor/cohere/model.go
Normal file
147
relay/adaptor/cohere/model.go
Normal file
@@ -0,0 +1,147 @@
|
||||
package cohere
|
||||
|
||||
type Request struct {
|
||||
Message string `json:"message" required:"true"`
|
||||
Model string `json:"model,omitempty"` // 默认值为"command-r"
|
||||
Stream bool `json:"stream,omitempty"` // 默认值为false
|
||||
Preamble string `json:"preamble,omitempty"`
|
||||
ChatHistory []ChatMessage `json:"chat_history,omitempty"`
|
||||
ConversationID string `json:"conversation_id,omitempty"`
|
||||
PromptTruncation string `json:"prompt_truncation,omitempty"` // 默认值为"AUTO"
|
||||
Connectors []Connector `json:"connectors,omitempty"`
|
||||
Documents []Document `json:"documents,omitempty"`
|
||||
Temperature float64 `json:"temperature,omitempty"` // 默认值为0.3
|
||||
MaxTokens int `json:"max_tokens,omitempty"`
|
||||
MaxInputTokens int `json:"max_input_tokens,omitempty"`
|
||||
K int `json:"k,omitempty"` // 默认值为0
|
||||
P float64 `json:"p,omitempty"` // 默认值为0.75
|
||||
Seed int `json:"seed,omitempty"`
|
||||
StopSequences []string `json:"stop_sequences,omitempty"`
|
||||
FrequencyPenalty float64 `json:"frequency_penalty,omitempty"` // 默认值为0.0
|
||||
PresencePenalty float64 `json:"presence_penalty,omitempty"` // 默认值为0.0
|
||||
Tools []Tool `json:"tools,omitempty"`
|
||||
ToolResults []ToolResult `json:"tool_results,omitempty"`
|
||||
}
|
||||
|
||||
type ChatMessage struct {
|
||||
Role string `json:"role" required:"true"`
|
||||
Message string `json:"message" required:"true"`
|
||||
}
|
||||
|
||||
type Tool struct {
|
||||
Name string `json:"name" required:"true"`
|
||||
Description string `json:"description" required:"true"`
|
||||
ParameterDefinitions map[string]ParameterSpec `json:"parameter_definitions"`
|
||||
}
|
||||
|
||||
type ParameterSpec struct {
|
||||
Description string `json:"description"`
|
||||
Type string `json:"type" required:"true"`
|
||||
Required bool `json:"required"`
|
||||
}
|
||||
|
||||
type ToolResult struct {
|
||||
Call ToolCall `json:"call"`
|
||||
Outputs []map[string]interface{} `json:"outputs"`
|
||||
}
|
||||
|
||||
type ToolCall struct {
|
||||
Name string `json:"name" required:"true"`
|
||||
Parameters map[string]interface{} `json:"parameters" required:"true"`
|
||||
}
|
||||
|
||||
type StreamResponse struct {
|
||||
IsFinished bool `json:"is_finished"`
|
||||
EventType string `json:"event_type"`
|
||||
GenerationID string `json:"generation_id,omitempty"`
|
||||
SearchQueries []*SearchQuery `json:"search_queries,omitempty"`
|
||||
SearchResults []*SearchResult `json:"search_results,omitempty"`
|
||||
Documents []*Document `json:"documents,omitempty"`
|
||||
Text string `json:"text,omitempty"`
|
||||
Citations []*Citation `json:"citations,omitempty"`
|
||||
Response *Response `json:"response,omitempty"`
|
||||
FinishReason string `json:"finish_reason,omitempty"`
|
||||
}
|
||||
|
||||
type SearchQuery struct {
|
||||
Text string `json:"text"`
|
||||
GenerationID string `json:"generation_id"`
|
||||
}
|
||||
|
||||
type SearchResult struct {
|
||||
SearchQuery *SearchQuery `json:"search_query"`
|
||||
DocumentIDs []string `json:"document_ids"`
|
||||
Connector *Connector `json:"connector"`
|
||||
}
|
||||
|
||||
type Connector struct {
|
||||
ID string `json:"id"`
|
||||
}
|
||||
|
||||
type Document struct {
|
||||
ID string `json:"id"`
|
||||
Snippet string `json:"snippet"`
|
||||
Timestamp string `json:"timestamp"`
|
||||
Title string `json:"title"`
|
||||
URL string `json:"url"`
|
||||
}
|
||||
|
||||
type Citation struct {
|
||||
Start int `json:"start"`
|
||||
End int `json:"end"`
|
||||
Text string `json:"text"`
|
||||
DocumentIDs []string `json:"document_ids"`
|
||||
}
|
||||
|
||||
type Response struct {
|
||||
ResponseID string `json:"response_id"`
|
||||
Text string `json:"text"`
|
||||
GenerationID string `json:"generation_id"`
|
||||
ChatHistory []*Message `json:"chat_history"`
|
||||
FinishReason *string `json:"finish_reason"`
|
||||
Meta Meta `json:"meta"`
|
||||
Citations []*Citation `json:"citations"`
|
||||
Documents []*Document `json:"documents"`
|
||||
SearchResults []*SearchResult `json:"search_results"`
|
||||
SearchQueries []*SearchQuery `json:"search_queries"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
type Message struct {
|
||||
Role string `json:"role"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
type Version struct {
|
||||
Version string `json:"version"`
|
||||
}
|
||||
|
||||
type Units struct {
|
||||
InputTokens int `json:"input_tokens"`
|
||||
OutputTokens int `json:"output_tokens"`
|
||||
}
|
||||
|
||||
type ChatEntry struct {
|
||||
Role string `json:"role"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
type Meta struct {
|
||||
APIVersion APIVersion `json:"api_version"`
|
||||
BilledUnits BilledUnits `json:"billed_units"`
|
||||
Tokens Usage `json:"tokens"`
|
||||
}
|
||||
|
||||
type APIVersion struct {
|
||||
Version string `json:"version"`
|
||||
}
|
||||
|
||||
type BilledUnits struct {
|
||||
InputTokens int `json:"input_tokens"`
|
||||
OutputTokens int `json:"output_tokens"`
|
||||
}
|
||||
|
||||
type Usage struct {
|
||||
InputTokens int `json:"input_tokens"`
|
||||
OutputTokens int `json:"output_tokens"`
|
||||
}
|
Reference in New Issue
Block a user