Este artículo muestra cómo integrar DeepSeek (vía LangChain4j) y desplegar modelos localmente con Olllama en una aplicación Spring Boot. Se asume que ya tienes un proyecto Spring Boot configurado.
- Integración con DeepSeek
DeepSeek ofrece una API compatible con OpenAI. Solo necesitas obtener una clave de API y configurarla.
1.1 Obtener credenciales
Acccede a https://platform.deepseek.com (API Open Platform) y genera una clave API. Recarga la cuenta con al menos 1 yuan (moneda china). Guarda la clave, ej: sk-xxxxxxxx.
1.2 Configurar entorno local
Por seguridad, la clave se define como variable de entorno del sistema:
- Abre "Propiedades del sistema" → "Variables de entorno".
- Crea una nueva variable de sistema: nombre
DEEPSEEK_API_KEY, valor tu clave. - Reinicia tu IDE (IntelliJ) para que herede la variable.
1.3 Configuración en application.properties
# DeepSeek (formato compatible con OpenAI)
langchain4j.openai.chat-model.base-url=https://api.deepseek.com
langchain4j.openai.chat-model.api-key=${DEEPSEEK_API_KEY}
langchain4j.openai.chat-model.model-name=deepseek-chat
# Para usar modelo de razonamiento: deepseek-reasoner
# langchain4j.openai.chat-model.model-name=deepseek-reasoner
langchain4j.openai.chat-model.log-requests=true
langchain4j.openai.chat-model.log-responses=true
logging.level.root=debug
Nota: también puedes usar https://api.deepseek.com/v1 como base URL.
1.4 Prueba de conexión
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import dev.langchain4j.model.openai.OpenAiChatModel;
@SpringBootTest
class DeepSeekTest {
@Autowired
private OpenAiChatModel chatModel; // Inyecta el bean configurado
@Test
void testDeepSeek() {
String response = chatModel.chat("Hola, ¿cuál es la capital de Francia?");
System.out.println("Respuesta: " + response);
}
}
Si no se conecta, verifica:
- Reinicio del IDE y que la varible
DEEPSEEK_API_KEYesté visible. En IntelliJ: Run → Edit Configurations, busca la prueba y revisa Environment variables. - Los logs de depuración muestran que la petición se envía a
https://api.deepseek.com/chat/completions. Una respuesta HTTP 200 indica éxito.
- Despliegue local con Ollama
Ollama permite ejecutar modelos de lenguaje localmente. Beneficios: privacidad, sin coste recurrente, funcionamiento offline.
2.1 Instalar Ollama
- Descarga desde
https://ollama.come instala. - Abre una terminal y verifica:
ollama --version - Lista modelos disponibles:
ollama list(inicialmente vacía). - Descarga un modelo, ej:
ollama pull deepseek-r1:1.5b(tamaño reducido). - Ejecuta directamente:
ollama run deepseek-r1:1.5by prueba con un mensaje.
2.2 Agregar dependencia Spring Boot
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-ollama-spring-boot-starter</artifactId>
</dependency>
Verifica en el panel Maven que langchain4j-ollama se haya descargado.
2.3 Configuración en application.properties
langchain4j.ollama.chat-model.base-url=http://localhost:11434
langchain4j.ollama.chat-model.model-name=deepseek-r1:1.5b
langchain4j.ollama.chat-model.temperature=0.8
langchain4j.ollama.chat-model.timeout=PT60S
2.4 Prueba con Ollama
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import dev.langchain4j.model.ollama.OllamaChatModel;
@SpringBootTest
class OllamaTest {
@Autowired
private OllamaChatModel ollamaModel;
@Test
void testOllama() {
String answer = ollamaModel.chat("¿Qué es un modelo de lenguaje?");
System.out.println("Ollama responde: " + answer);
}
}
La respuesta debe ser generada localmente sin conexión a Internet.
- Notas finales
Ambas integraciones (DeepSeek remoto y Ollama local) usan el mismo patrón de LangChain4j, facilitando cambiar entre proveedores. Ajusta el nombre del modelo según el que hayas descargado localmente. Para aplicaciones productivas, considera la configuración de timeouts y reintentos.