> ## Documentation Index
> Fetch the complete documentation index at: https://buddy-a805c3e6.mintlify.app/llms.txt
> Use this file to discover all available pages before exploring further.

# API Reference

> Arquitectura y componentes del backend

## Estructura

El backend gestiona la lógica de negocio mediante cinco componentes principales:

<CardGroup>
  <Card title="anthropic.js" icon="robot">
    Gestiona las solicitudes al modelo Claude 3.5 de Anthropic
  </Card>

  <Card title="buddy-view-provider.js" icon="bridge">
    Actúa como puente entre frontend y backend
  </Card>

  <Card title="extension.js" icon="plug">
    Punto de entrada de la extensión
  </Card>

  <Card title="utils.js" icon="wrench">
    Funciones genéricas reutilizables
  </Card>
</CardGroup>

## Integración con Anthropic

El archivo `anthropic.js` gestiona las solicitudes mediante:

```javascript theme={null}
const queryAI = async (prompt) => {
  try {
    // Configuración y envío de la solicitud
    const response = await anthropic.messages.create({
      model: "claude-3-sonnet-20240229",
      max_tokens: 4096,
      messages: [{ role: "user", content: prompt }]
    });
    return response.content;
  } catch (error) {
    console.error("Error al consultar la API:", error);
    throw error;
  }
};
```

## Controlador

El archivo `buddy-view-provider.js` funciona como controlador principal:

### Funcionalidades clave

* Preparación del entorno
* Construcción de prompts
* Interacción con API
* Procesamiento de respuestas
* Gestión de errores

### Ejemplo de procesamiento

```javascript theme={null}
async function sendApiRequestWithCode(selectedCode) {
  try {
    // Validar selección de código
    if (!selectedCode) {
      throw new Error("No hay código seleccionado");
    }

    // Construir prompt
    const prompt = {
      role: "user",
      content: `Analiza este código: ${selectedCode}`
    };

    // Enviar solicitud
    const response = await queryAI(prompt);
    
    // Procesar y devolver respuesta
    return formatResponse(response);
  } catch (error) {
    handleError(error);
  }
}
```
