|
package duckgo |
|
|
|
import ( |
|
duckgotypes "aurora/typings/duckgo" |
|
officialtypes "aurora/typings/official" |
|
"strings" |
|
) |
|
|
|
func ConvertAPIRequest(api_request officialtypes.APIRequest) duckgotypes.ApiRequest { |
|
inputModel := api_request.Model |
|
duckgo_request := duckgotypes.NewApiRequest(inputModel) |
|
realModel := inputModel |
|
|
|
|
|
modelLower := strings.ToLower(inputModel) |
|
switch { |
|
case strings.HasPrefix(modelLower, "gpt-3.5"): |
|
realModel = "gpt-4o-mini" |
|
case strings.HasPrefix(modelLower, "claude-3-haiku"): |
|
realModel = "claude-3-haiku-20240307" |
|
case strings.HasPrefix(modelLower, "llama-3.3-70b"): |
|
realModel = "meta-llama/Llama-3.3-70B-Instruct-Turbo" |
|
case strings.HasPrefix(modelLower, "mixtral-8x7b"): |
|
realModel = "mistralai/Mixtral-8x7B-Instruct-v0.1" |
|
case strings.HasPrefix(modelLower, "o3-mini"): |
|
realModel = "o3-mini" |
|
} |
|
|
|
duckgo_request.Model = realModel |
|
content := buildContent(&api_request) |
|
duckgo_request.AddMessage("user", content) |
|
|
|
return duckgo_request |
|
} |
|
|
|
func buildContent(api_request *officialtypes.APIRequest) string { |
|
var content strings.Builder |
|
for _, apiMessage := range api_request.Messages { |
|
role := apiMessage.Role |
|
if role == "user" || role == "system" || role == "assistant" { |
|
if role == "system" { |
|
role = "user" |
|
} |
|
contentStr := "" |
|
|
|
if arrayContent, ok := apiMessage.Content.([]interface{}); ok { |
|
|
|
for _, element := range arrayContent { |
|
if elementMap, ok := element.(map[string]interface{}); ok { |
|
if elementMap["type"] == "text" { |
|
contentStr = elementMap["text"].(string) |
|
break |
|
} |
|
} |
|
} |
|
} else { |
|
contentStr, _ = apiMessage.Content.(string) |
|
} |
|
content.WriteString(role + ":" + contentStr + ";\r\n") |
|
} |
|
} |
|
return content.String() |
|
} |
|
|