Construye un Profesor de Inglés Personal con Python - Fase 2

Aprende a añadir corrección gramatical automática a un chatbot en Python usando LanguageTool. Fase 2: mejora tu profesor de inglés local con FastAPI.

Construye un Profesor de Inglés Personal con Python - Fase 2

En esta fase agregamos corrección gramatical automática al chatbot usando LanguageTool, una librería open-source que puede ejecutarse localmente. Ahora el bot no solo recibe tu mensaje, sino que también te ayuda a escribir correctamente.

Todas estas herramientas se usarán de manera local, sin depender de APIs externas de pago.


📚 Tabla de Contenidos



1️⃣ Qué aprenderás en esta fase

  • Integrar corrección gramatical automática en tu chatbot
  • Usar LanguageTool, una herramienta open-source que puede ejecutarse localmente
  • Conectar la corrección al endpoint creado en Fase 1
  • Mantener la arquitectura profesional de Python
  • Prepararte para integrar GPT4All en la Fase 3


2️⃣ Herramienta principal

LanguageTool

  • Open-source, puede ejecutarse local o con servidor remoto
  • Permite detectar errores gramaticales y sugerir correcciones
  • Funciona con Python a través de la librería language-tool-python

Esta librería puede funcionar con servidor local si quieres evitar internet. Para proyectos simples, el modo por defecto está bien.


3️⃣ Actualizar requirements.txt

Para mantener el proyecto reproducible, vamos a actualizar el archivo requirements.txt con todas las librerías que necesitamos hasta ahora:

fastapi==0.115.0
uvicorn==0.22.0
requests==2.32.0
//Añadimos language-tool-python
language-tool-python==2.9.5

Esto permite instalar todas las dependencias con un solo comando:

pip install -r requirements.txt

En fases futuras, cuando agreguemos GPT4All, pyttsx3, SpeechRecognition o cualquier otra librería, simplemente la añadiremos al requirements.txt y el proyecto seguirá siendo totalmente reproducible.

3️⃣ Actualizar el endpoint del chatbot

Ahora vamos a modificar el endpoint para que, además de responder, corrija tu inglés.

# app/main.py
from fastapi import FastAPI
from pydantic import BaseModel, Field
import language_tool_python

app = FastAPI()

tool = language_tool_python.LanguageTool('en-US')


class Message(BaseModel):
    text: str = Field(..., min_length=1)


@app.post("/sendMessage")
async def send_message(msg: Message):
    matches = tool.check(msg.text)

    if not matches:
        return {
            "original": msg.text,
            "corrected": msg.text,
            "message": "Your sentence is correct!"
        }

    corrected_text = language_tool_python.utils.correct(msg.text, matches)

    return {
        "original": msg.text,
        "corrected": corrected_text,
        "message": "We found some mistakes and corrected them."
    }

4️⃣ Probar la corrección gramatical

import requests

url = "http://127.0.0.1:8000/sendMessage"
data = {"text": "I has a apple"}
response = requests.post(url, json=data)
print(response.json())

Resultado esperado:

{
"original": "I has a apple",
"corrected": "I have an apple"
}

💡 Nota:

  • Esto ahora es tu bot de inglés con corrección local.
  • Todavía no genera respuestas inteligentes, solo corrige lo que envías.
  • Esto sienta las bases para integrar GPT4All en la Fase 3.

🚀 ¿Qué sigue?

En la Fase 3 agregaremos historial de usuario y progreso, además de comenzar a darle respuestas inteligentes con GPT4All.

Si quieres ir a la fase 3 haz click aquí