internal/llm/vision_fallback_provider.go
Rama main · réplica de lectura del repositorio original.
package llm
import "context"
type VisionFallbackProvider struct {
TextOnlyModel LanguageModelProvider
VisionModel LanguageModelProvider
}
func (provider VisionFallbackProvider) GenerateResponse(responseContext context.Context, prompt string) (string, error) {
return provider.TextOnlyModel.GenerateResponse(responseContext, prompt)
}
func (provider VisionFallbackProvider) GenerateStructuredResponse(responseContext context.Context, request StructuredResponseRequest) (StructuredResponse, error) {
if requestContainsImage(request) {
return provider.VisionModel.GenerateStructuredResponse(responseContext, request)
}
return provider.TextOnlyModel.GenerateStructuredResponse(responseContext, request)
}
func requestContainsImage(request StructuredResponseRequest) bool {
for _, message := range request.Messages {
if messagePartsContainImage(message.Parts) {
return true
}
}
return false
}
func chatRequestContainsImage(request ChatCompletionRequest) bool {
for _, message := range request.Messages {
if messagePartsContainImage(message.Parts) {
return true
}
}
return false
}
func messagePartsContainImage(parts []MessagePart) bool {
for _, part := range parts {
if part.Type == "image" {
return true
}
}
return false
}