thread-master/internal/logic/ai/mapper.go

61 lines
1.5 KiB
Go
Raw Permalink Normal View History

2026-06-26 08:37:04 +00:00
package ai
import (
"haixun-backend/internal/model/ai/domain/enum"
domai "haixun-backend/internal/model/ai/domain/usecase"
threadsdom "haixun-backend/internal/model/threads_account/domain/usecase"
"haixun-backend/internal/types"
)
func toCredentialGenerateRequest(
messages []types.AIMessage,
credential *threadsdom.WorkerAiCredential,
system string,
) domai.GenerateRequest {
domMessages := make([]domai.Message, 0, len(messages))
for _, msg := range messages {
domMessages = append(domMessages, domai.Message{
Role: msg.Role,
Content: msg.Content,
})
}
provider := ""
model := ""
apiKey := ""
if credential != nil {
provider = credential.Provider
model = credential.Model
apiKey = credential.APIKey
}
return domai.GenerateRequest{
Provider: enum.ProviderID(provider),
Model: model,
Credential: domai.Credential{
APIKey: apiKey,
},
System: system,
Messages: domMessages,
}
}
func toGenerateRequest(req *types.AIChatReq, token string, system string) domai.GenerateRequest {
messages := make([]domai.Message, 0, len(req.Messages))
for _, msg := range req.Messages {
messages = append(messages, domai.Message{
Role: msg.Role,
Content: msg.Content,
})
}
return domai.GenerateRequest{
Provider: enum.ProviderID(req.Provider),
Model: req.Model,
Credential: domai.Credential{
APIKey: token,
},
System: system,
Messages: messages,
Temperature: req.Temperature,
MaxTokens: req.MaxTokens,
}
}