Files
fn_registry/kotlin/functions/infra/ollama_chat.md
T
egutierrez b1016ec845 chore: add Kotlin directory structure, update registry.db and gitignore
Añade estructura inicial kotlin/functions/, actualiza registry.db con todos
los cambios indexados, y ajusta .gitignore.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 23:47:27 +02:00

2.6 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path, params, output
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path params output
ollama_chat function kt infra 1.0.0 impure fun ollamaChat(messages: List<Map<String, String>>, model: String = "llama3.1:8b", baseUrl: String = "http://localhost:11434", temperature: Double = 0.7, maxTokens: Int = 1024): OllamaChatResponse Envía una solicitud de chat completion a un servidor Ollama local. Retorna el contenido generado junto a métricas de duración y tokens evaluados.
ollama
llm
chat
inference
http
android
kotlin
false error_go_core
org.json.JSONObject
org.json.JSONArray
java.net.HttpURLConnection
java.net.URL
false
kotlin/functions/infra/ollama_chat.kt
name desc
messages Lista de mapas role/content en formato OpenAI/Ollama. Ej: [{"role":"user","content":"Hola"}].
name desc
model Tag del modelo Ollama a usar. Por defecto 'llama3.1:8b'.
name desc
baseUrl URL base del servidor Ollama. Por defecto 'http://localhost:11434'.
name desc
temperature Temperatura de muestreo entre 0.0 (determinista) y 1.0 (creativo). Por defecto 0.7.
name desc
maxTokens Número máximo de tokens a generar. Por defecto 1024.
OllamaChatResponse con content (texto generado), model (nombre del modelo), totalDurationMs (duración total en milisegundos) y evalCount (tokens evaluados).

Ejemplo

val messages = listOf(
    mapOf("role" to "system", "content" to "Eres un asistente útil."),
    mapOf("role" to "user", "content" to "¿Cuál es la capital de Francia?")
)

val response = ollamaChat(
    messages = messages,
    model = "llama3.1:8b",
    temperature = 0.3
)

println(response.content)          // "La capital de Francia es París."
println(response.totalDurationMs)  // 1234
println(response.evalCount)        // 42

Notas

Usa java.net.HttpURLConnection y org.json.JSONObject del Android SDK — sin dependencias externas adicionales. Timeout de 60 segundos tanto en conexión como en lectura.

La respuesta de Ollama incluye total_duration en nanosegundos; se convierte a milisegundos dividiendo entre 1_000_000.

Si Ollama no está corriendo lanza RuntimeException("Ollama no está corriendo en $baseUrl"). Si el servidor responde con un código HTTP distinto de 200, lanza RuntimeException con el código y el cuerpo del error.

El campo stream se fija a false para recibir la respuesta completa en una sola llamada.

---