Apidog

Plataforma de desarrollo de API colaborativa todo en uno

Diseño de API

Documentación de API

Depuración de API

Simulación de API

Prueba automatizada de API

Cómo construir agentes de IA con SmolAgents y Deepseek R1

Este sistema permite procesamiento eficiente de documentos, búsqueda inteligente y razonamiento similar al humano, ideal para investigación, soporte y gestión del conocimiento.

Daniel Costa

Daniel Costa

Updated on April 15, 2025

Introducción

La integración de modelos de razonamiento avanzados y frameworks ligeros está transformando la forma en que los sistemas de IA recuperan, procesan y presentan información. En esta guía, construiremos un sistema de Generación Aumentada por Recuperación (RAG) utilizando DeepSeek R1, un modelo de razonamiento de alto rendimiento, y SmolAgents, un framework de agente minimalista de Hugging Face. Este sistema permitirá un procesamiento eficiente de documentos, una búsqueda inteligente y un razonamiento similar al humano, ideal para aplicaciones de investigación, atención al cliente y gestión del conocimiento.

💡
Si estás buscando una herramienta de gestión de API potente que pueda optimizar tu flujo de trabajo mientras trabajas con DeepSeek R1, no te pierdas Apidog. Puedes descargar Apidog gratis hoy mismo, ¡y está perfectamente adaptado para trabajar con proyectos como DeepSeek R1, haciendo que tu viaje de desarrollo sea más fluido y agradable!
button

Requisitos del sistema para ejecutar la configuración

El agente de IA realizará cuatro tareas principales:

  1. Cargar y procesar archivos PDF: Convertir documentos en fragmentos de texto con capacidad de búsqueda.
  2. Crear una base de datos vectorial: Almacenar incrustaciones para una búsqueda semántica rápida.
  3. Recuperar y razonar: Utilizar DeepSeek R1 para analizar los datos recuperados y generar respuestas.
  4. Interactuar con los usuarios: Proporcionar una interfaz conversacional para una interacción fluida.


Paso 1: Cargar y procesar documentos PDF

Herramientas y bibliotecas

  • LangChain: Para la carga de documentos y la división de texto.
  • ChromaDB: Una base de datos vectorial ligera para almacenar incrustaciones.
  • Hugging Face Embeddings: Para convertir texto en representaciones vectoriales.

Implementación

1.1 Cargar archivos PDF

Utiliza DirectoryLoader de LangChain para cargar todos los archivos PDF de un directorio. Cada PDF se divide en páginas para su procesamiento.

from langchain_community.document_loaders import DirectoryLoader, PyPDFLoader  
from langchain.text_splitter import RecursiveCharacterTextSplitter  

def load_and_process_pdfs(data_dir: str):  
    loader = DirectoryLoader(  
        data_dir,  
        glob="**/*.pdf",  
        loader_cls=PyPDFLoader  
    )  
    documents = loader.load()  

    # Split documents into chunks  
    text_splitter = RecursiveCharacterTextSplitter(  
        chunk_size=1000,  
        chunk_overlap=200,  
        length_function=len,  
    )  
    return text_splitter.split_documents(documents)  

1.2 Crear un almacén de vectores

Convierte los fragmentos de texto en incrustaciones y almacénalos en ChromaDB para una recuperación eficiente.

from langchain_huggingface import HuggingFaceEmbeddings  
from langchain_community.vectorstores import Chroma  
import os  
import shutil  

def create_vector_store(chunks, persist_directory: str):  
    if os.path.exists(persist_directory):  
        shutil.rmtree(persist_directory)  

    embeddings = HuggingFaceEmbeddings(  
        model_name="sentence-transformers/all-mpnet-base-v2",  
        model_kwargs={'device': 'cpu'}  
    )  

    vectordb = Chroma.from_documents(  
        documents=chunks,  
        embedding=embeddings,  
        persist_directory=persist_directory  
    )  
    return vectordb  

Consideraciones clave

  • Tamaño del fragmento: 1000 caracteres con una superposición de 200 caracteres equilibra la retención del contexto y la eficiencia de la búsqueda.
  • Modelo de incrustación: all-mpnet-base-v2 proporciona incrustaciones de oraciones de alta calidad.

Paso 2: Implementar el agente de razonamiento con DeepSeek R1

¿Por qué DeepSeek R1?

DeepSeek R1 se especializa en el razonamiento de varios pasos, lo que le permite desglosar consultas complejas, inferir relaciones y generar respuestas estructuradas.

Inicializar el modelo de razonamiento

Configura DeepSeek R1 a través de Ollama para la inferencia local:

from smolagents import OpenAIServerModel, CodeAgent  

reasoning_model_id = "deepseek-r1:7b"  

def get_model(model_id):  
    return OpenAIServerModel(  
        model_id=model_id,  
        api_base="http://localhost:11434/v1",  
        api_key="ollama"  
    )  

reasoning_model = get_model(reasoning_model_id)  
reasoner = CodeAgent(  
    tools=[],  
    model=reasoning_model,  
    add_base_tools=False,  
    max_steps=2  # Limit reasoning iterations for efficiency  
)  

Paso 3: Construir el pipeline de Generación Aumentada por Recuperación (RAG)

Diseño de la herramienta

Crea una herramienta RAG que combine la recuperación de documentos con las capacidades de razonamiento de DeepSeek R1.

from smolagents import tool  

@tool  
def rag_with_reasoner(user_query: str) -> str:  
    # Retrieve relevant documents  
    docs = vectordb.similarity_search(user_query, k=3)  
    context = "\n\n".join(doc.page_content for doc in docs)  

    # Generate a reasoning prompt  
    prompt = f"""  
    Based on the following context, answer the user's question concisely.  
    If the information is insufficient, suggest a refined query.  

    Context:  
    {context}  

    Question: {user_query}  

    Answer:  
    """  

    return reasoner.run(prompt, reset=False)  

Características clave

  • Prompts contextuales: Inyecta documentos recuperados en el prompt para obtener respuestas fundamentadas.
  • Mecanismo de fallback: El modelo sugiere mejores consultas cuando los datos son insuficientes.

Paso 4: Implementar el agente de IA principal

Orquestar el flujo de trabajo

El agente principal, impulsado por Llama 3.2, gestiona las interacciones del usuario e invoca la herramienta RAG según sea necesario:

from smolagents import ToolCallingAgent, GradioUI  

tool_model = get_model("llama3.2")  
primary_agent = ToolCallingAgent(  
    tools=[rag_with_reasoner],  
    model=tool_model,  
    add_base_tools=False,  
    max_steps=3  
)  

def main():  
    GradioUI(primary_agent).launch()  

if __name__ == "__main__":  
    main()  

Interfaz de usuario

La interfaz de usuario proporciona una interfaz web sencilla para la interacción en tiempo real:

  • Los usuarios introducen consultas.
  • El agente recupera documentos, razona con DeepSeek R1 y devuelve respuestas.

La integración de DeepSeek R1 y SmolAgents ofrece una potente solución de IA que combina un razonamiento mejorado para analizar consultas complejas, una recuperación eficiente a través de la búsqueda semántica rápida de ChromaDB y una implementación local rentable para evitar la dependencia de costosas API en la nube. Su arquitectura escalable permite una integración perfecta de nuevas herramientas, lo que la hace ideal para aplicaciones como la investigación (análisis de documentos técnicos), la atención al cliente (resolución de preguntas frecuentes) y la gestión del conocimiento (transformación de recursos estáticos en sistemas interactivos).

Las mejoras futuras podrían ampliar el soporte de documentos para incluir Word, HTML y markdown, integrar la búsqueda web en tiempo real para un contexto más amplio e implementar bucles de retroalimentación para refinar la precisión de las respuestas con el tiempo. Este framework ofrece una base versátil para construir asistentes de IA inteligentes y adaptables adaptados a diversas necesidades.

Cómo usar Ollama: Guía Completa para Principiantes sobre LLMs Locales con OllamaPunto de vista

Cómo usar Ollama: Guía Completa para Principiantes sobre LLMs Locales con Ollama

El panorama de la inteligencia artificial evoluciona constantemente, y los Grandes Modelos de Lenguaje (LLM) se vuelven cada vez más potentes y accesibles. Aunque muchos interactúan con estos modelos a través de servicios basados en la nube, existe un movimiento creciente enfocado en ejecutarlos directamente en computadoras personales. Aquí es donde entra Ollama. Ollama es una herramienta potente pero fácil de usar, diseñada para simplificar drásticamente el complejo proceso de descargar, config

Mikael Svenson

April 28, 2025

¿Dónde Descargar Swagger UI en Español Gratis?Punto de vista

¿Dónde Descargar Swagger UI en Español Gratis?

¿Necesitas Swagger UI en español? Este artículo explica por qué no existe una descarga oficial gratuita y cómo habilitar la traducción. Explora las características de Swagger y por qué Apidog es la alternativa superior para diseño, pruebas y documentación API integrados.

Oliver Kingsley

April 23, 2025

¿Dónde Descargar Postman en Español Gratis?Punto de vista

¿Dónde Descargar Postman en Español Gratis?

¿Puedes descargar Postman en español gratis? Aunque Postman carece de soporte nativo en español, existen soluciones. Explóralas y descubre Apidog, una potente alternativa unificada a Postman diseñada para optimizar todo tu flujo de trabajo de API, sin importar el idioma.

Oliver Kingsley

April 22, 2025