mirror of
https://github.com/FBukovina/Atoll.git
synced 2026-10-27 15:14:33 +00:00
Add Groq provider to screen assistant model selection and API routing
Agent-Logs-Url: https://github.com/AkhilKonduru1/Atoll/sessions/d40c666d-f589-48ca-9539-1fd33c799962 Co-authored-by: AkhilKonduru1 <210101196+AkhilKonduru1@users.noreply.github.com>
This commit is contained in:
parent
dbdeabdd83
commit
01c4284270
4 changed files with 93 additions and 9 deletions
|
|
@ -397,6 +397,8 @@ class ScreenAssistantManager: NSObject, ObservableObject {
|
|||
sendToClaudeAPI(message: message, files: files)
|
||||
case .local:
|
||||
sendToLocalAPI(message: message, files: files)
|
||||
case .groq:
|
||||
sendToGroqAPI(message: message, files: files)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -445,6 +447,36 @@ class ScreenAssistantManager: NSObject, ObservableObject {
|
|||
|
||||
performOpenAIRequest(url: url, requestBody: buildOpenAIRequestBody(message: message, files: files, model: modelId), apiKey: apiKey)
|
||||
}
|
||||
|
||||
private func sendToGroqAPI(message: String, files: [ScreenAssistantFile]) {
|
||||
let apiKey = Defaults[.groqApiKey]
|
||||
guard !apiKey.isEmpty else {
|
||||
print("❌ ScreenAssistant: No Groq API key configured")
|
||||
addAssistantMessage("Error: No Groq API key configured. Please set your API key in model settings.")
|
||||
isLoading = false
|
||||
return
|
||||
}
|
||||
|
||||
// Get selected model or default to llama-3.3-70b-versatile
|
||||
let selectedModel = Defaults[.selectedAIModel]
|
||||
let modelId = AIModelProvider.groq.supportedModels.contains(where: { $0.id == selectedModel?.id })
|
||||
? selectedModel!.id
|
||||
: "llama-3.3-70b-versatile"
|
||||
|
||||
guard let url = URL(string: "https://api.groq.com/openai/v1/chat/completions") else {
|
||||
print("❌ ScreenAssistant: Invalid Groq API URL")
|
||||
addAssistantMessage("Error: Invalid API URL")
|
||||
isLoading = false
|
||||
return
|
||||
}
|
||||
|
||||
performOpenAIRequest(
|
||||
url: url,
|
||||
requestBody: buildOpenAIRequestBody(message: message, files: files, model: modelId),
|
||||
apiKey: apiKey,
|
||||
provider: .groq
|
||||
)
|
||||
}
|
||||
|
||||
private func sendToClaudeAPI(message: String, files: [ScreenAssistantFile]) {
|
||||
let apiKey = Defaults[.claudeApiKey]
|
||||
|
|
@ -682,7 +714,7 @@ class ScreenAssistantManager: NSObject, ObservableObject {
|
|||
task?.resume()
|
||||
}
|
||||
|
||||
private func performOpenAIRequest(url: URL, requestBody: [String: Any], apiKey: String) {
|
||||
private func performOpenAIRequest(url: URL, requestBody: [String: Any], apiKey: String, provider: AIModelProvider = .openai) {
|
||||
var request = URLRequest(url: url)
|
||||
request.httpMethod = "POST"
|
||||
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
|
||||
|
|
@ -710,7 +742,7 @@ class ScreenAssistantManager: NSObject, ObservableObject {
|
|||
self.isLoading = false
|
||||
self.activeRequest = nil
|
||||
|
||||
self.handleResponse(data: data, response: response, error: error, provider: .openai)
|
||||
self.handleResponse(data: data, response: response, error: error, provider: provider)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -792,6 +824,8 @@ class ScreenAssistantManager: NSObject, ObservableObject {
|
|||
parseGeminiResponse(data: data)
|
||||
case .openai:
|
||||
parseOpenAIResponse(data: data)
|
||||
case .groq:
|
||||
parseOpenAIResponse(data: data)
|
||||
case .claude:
|
||||
parseClaudeResponse(data: data)
|
||||
case .local:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue