Ctrl K
ComunidadGuías…

internal/llm/vision_fallback_provider.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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
}