ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Tutoriales
  3. Cómo agregar búsqueda a una configuración de codificación local de múltiples agentes
Tutorial

Cómo agregar búsqueda a una configuración de codificación local de múltiples agentes

Ofrezca a su configuración de codificación multiagente Pi o llama-swap una búsqueda en tiempo real. Generación de código básico con documentación en vivo y datos de paquetes.

Obtener clave API gratisDocumentacion API

Las configuraciones de codificación locales de múltiples agentes que utilizan Pi, llama-swap o herramientas similares generan código en un entorno privado y fuera de línea. El problema: alucinan firmas de API, inventan paquetes inexistentes y utilizan patrones obsoletos. Agregar una herramienta de búsqueda que verifique la documentación actual antes de generar código soluciona este problema. Este tutorial conecta su configuración local de múltiples agentes a la API de Scavio ($0.005/búsqueda) para que los agentes puedan verificar las API, verificar las versiones de los paquetes y consultar los documentos actuales.

Requisitos previos

  • Una configuración local de múltiples agentes (Pi, llama-swap o similar)
  • Python 3.9+ instalado
  • solicita biblioteca instalada
  • Una clave API de Scavio de scavio.dev

Guia paso a paso

Paso 1: Construya la herramienta de búsqueda de documentación

Cree una función de búsqueda optimizada para búsquedas de documentación de código. Se dirige a sitios de documentación específicos y formatea los resultados para el contexto del código.

Python
import os, requests

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
URL = 'https://api.scavio.dev/api/v1/search'
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}

def search_docs(query: str, language: str = 'python') -> str:
    """Search for code documentation and API references."""
    # Add language context
    doc_sites = {
        'python': 'docs.python.org OR pypi.org OR readthedocs.io',
        'javascript': 'developer.mozilla.org OR npmjs.com OR nodejs.org',
        'typescript': 'typescriptlang.org OR npmjs.com',
        'rust': 'docs.rs OR crates.io',
    }
    site_filter = doc_sites.get(language, '')
    full_query = f'{query} {language} {site_filter}'.strip()
    resp = requests.post(URL, headers=H,
        json={'query': full_query, 'country_code': 'us', 'num_results': 5})
    results = resp.json().get('organic_results', [])
    if not results:
        return f'No documentation found for: {query}'
    return '\n\n'.join(
        f'[{i+1}] {r["title"]}\n{r.get("snippet", "")}\nURL: {r["link"]}'
        for i, r in enumerate(results)
    )

# Test: search for API documentation
print(search_docs('requests post json headers', 'python'))
print('---')
print(search_docs('fetch api post request', 'javascript'))

Paso 2: Agregar verificación de versión del paquete

Antes de usar un paquete en el código generado, verifique que exista y verifique la versión actual. Esto evita que el agente importe paquetes inexistentes.

Python
def check_package(name: str, language: str = 'python') -> dict:
    """Verify a package exists and get current version info."""
    if language == 'python':
        query = f'pypi.org {name} package'
    elif language in ('javascript', 'typescript'):
        query = f'npmjs.com {name} package'
    else:
        query = f'{name} package {language}'
    resp = requests.post(URL, headers=H,
        json={'query': query, 'country_code': 'us', 'num_results': 3})
    results = resp.json().get('organic_results', [])
    if not results:
        return {'name': name, 'exists': False}
    # Check if pypi/npm appears in results
    registry_hit = any('pypi.org' in r.get('link', '') or 'npmjs.com' in r.get('link', '')
                       for r in results)
    return {
        'name': name,
        'exists': registry_hit,
        'top_result': results[0]['title'],
        'snippet': results[0].get('snippet', '')[:150],
        'url': results[0]['link'],
    }

# Test packages
for pkg in ['requests', 'fastapi', 'nonexistent-fake-pkg-xyz']:
    result = check_package(pkg)
    status = 'EXISTS' if result['exists'] else 'NOT FOUND'
    print(f'[{status}] {pkg}: {result.get("top_result", "N/A")[:50]}')

Paso 3: Crear la interfaz de la herramienta del agente

Defina herramientas a las que su sistema multiagente pueda llamar. Las herramientas search_docs y check_package se integran con cualquier configuración de llamada de herramienta compatible con OpenAI.

Python
import json

AGENT_TOOLS = [
    {
        'type': 'function',
        'function': {
            'name': 'search_docs',
            'description': 'Search for programming documentation, API references, and code examples. Use BEFORE writing code that uses external libraries or APIs.',
            'parameters': {
                'type': 'object',
                'properties': {
                    'query': {'type': 'string', 'description': 'What to search for (e.g., "fastapi dependency injection")'},
                    'language': {'type': 'string', 'enum': ['python', 'javascript', 'typescript', 'rust'], 'description': 'Programming language context'}
                },
                'required': ['query']
            }
        }
    },
    {
        'type': 'function',
        'function': {
            'name': 'check_package',
            'description': 'Verify a package exists before importing it. Prevents hallucinated package names.',
            'parameters': {
                'type': 'object',
                'properties': {
                    'name': {'type': 'string', 'description': 'Package name'},
                    'language': {'type': 'string', 'enum': ['python', 'javascript'], 'description': 'Package ecosystem'}
                },
                'required': ['name']
            }
        }
    }
]

def handle_tool_call(name: str, args: dict) -> str:
    if name == 'search_docs':
        return search_docs(args['query'], args.get('language', 'python'))
    elif name == 'check_package':
        result = check_package(args['name'], args.get('language', 'python'))
        return json.dumps(result)
    return 'Unknown tool'

print('Agent tools defined:', [t['function']['name'] for t in AGENT_TOOLS])

Paso 4: Conéctese al bucle multiagente

Conecte las herramientas a su sistema multiagente local. El agente de codificación busca documentos antes de escribir el código y el agente de revisión verifica los paquetes antes de aprobarlos.

Python
def coding_agent_loop(task: str, model: str = 'llama3') -> str:
    """A coding agent that searches docs before generating code."""
    llm_url = 'http://localhost:11434/v1/chat/completions'
    messages = [
        {'role': 'system', 'content': (
            'You are a coding assistant. ALWAYS use search_docs to check API '
            'signatures before writing code. ALWAYS use check_package to verify '
            'packages exist before importing them. Write working, tested code.'
        )},
        {'role': 'user', 'content': task}
    ]
    for turn in range(5):
        resp = requests.post(llm_url, json={
            'model': model, 'messages': messages,
            'tools': AGENT_TOOLS, 'max_tokens': 1024
        })
        msg = resp.json()['choices'][0]['message']
        messages.append(msg)
        if not msg.get('tool_calls'):
            return msg.get('content', '')
        for tc in msg['tool_calls']:
            args = json.loads(tc['function']['arguments']) if isinstance(tc['function']['arguments'], str) else tc['function']['arguments']
            result = handle_tool_call(tc['function']['name'], args)
            messages.append({'role': 'tool', 'tool_call_id': tc['id'], 'content': result})
    return messages[-1].get('content', 'Max turns reached')

# Test the coding agent
code = coding_agent_loop('Write a Python function that fetches JSON from an API using httpx')
print(code[:500])

Ejemplo en Python

Python
import os, requests, json

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}

def search_docs(query, lang='python'):
    resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'query': f'{query} {lang} documentation', 'country_code': 'us', 'num_results': 3})
    return '\n'.join(f'[{i+1}] {r["title"]}: {r.get("snippet","")}'
                     for i, r in enumerate(resp.json().get('organic_results', [])))

def check_pkg(name, lang='python'):
    registry = 'pypi.org' if lang == 'python' else 'npmjs.com'
    resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'query': f'{registry} {name}', 'country_code': 'us', 'num_results': 1})
    results = resp.json().get('organic_results', [])
    exists = any(registry in r.get('link', '') for r in results)
    print(f"{'EXISTS' if exists else 'NOT FOUND'}: {name}")

print(search_docs('httpx async client'))
check_pkg('httpx')
check_pkg('fake-nonexistent-pkg')

Ejemplo en JavaScript

JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;

async function searchDocs(query, lang = 'javascript') {
  const resp = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST',
    headers: { 'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ query: `${query} ${lang} documentation`, country_code: 'us', num_results: 3 })
  });
  return ((await resp.json()).organic_results || []).map((r, i) => `[${i+1}] ${r.title}: ${r.snippet || ''}`).join('\n');
}

async function checkPkg(name) {
  const resp = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST',
    headers: { 'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ query: `npmjs.com ${name}`, country_code: 'us', num_results: 1 })
  });
  const results = (await resp.json()).organic_results || [];
  console.log(`${results.some(r => r.link.includes('npmjs.com')) ? 'EXISTS' : 'NOT FOUND'}: ${name}`);
}

searchDocs('fetch api post').then(console.log);
checkPkg('express');

Salida esperada

JSON
[EXISTS] requests: requests 2.32.0 - PyPI
[EXISTS] fastapi: fastapi - PyPI - A modern, fast web framework
[NOT FOUND] nonexistent-fake-pkg-xyz

Agent tools defined: ['search_docs', 'check_package']

[1] requests - PyPI: HTTP library for Python
    Requests allows you to send HTTP requests extremely easily...
    URL: https://pypi.org/project/requests/

Tutoriales relacionados

  • Cómo agregar búsqueda a un asistente personal de Ollama
  • Cómo fundamentar un LLM local con datos de búsqueda multiplataforma
  • Cómo agregar búsqueda en tiempo real a Claude a través de MCP
  • Cómo determinar el alcance de los servidores MCP por proyecto para reducir la sobrecarga de tokens

Preguntas frecuentes

La mayoria de los desarrolladores completan este tutorial en 15 a 30 minutos. Necesitaras una clave API de Scavio (el plan gratuito funciona) y un entorno de Python o JavaScript.

Una configuración local de múltiples agentes (Pi, llama-swap o similar). Python 3.9+ instalado. solicita biblioteca instalada. Una clave API de Scavio de scavio.dev. Una clave API de Scavio te da 50 creditos gratuitos al registrarte.

Si. El plan gratuito incluye 50 creditos al registrarte, mas que suficiente para completar este tutorial y crear un prototipo funcional.

Scavio tiene un paquete nativo de LangChain (langchain-scavio), un servidor MCP y una API REST simple que funciona con cualquier cliente HTTP. Este tutorial usa the raw REST API, pero puedes adaptarlo al framework que prefieras.

Recursos relacionados

Best Of

La mejor API SERP para SEO local en 2026

Read more
Comparison

Google Places API vs SERP Local Pack API

Read more
Best Of

Las mejores API para pilas de herramientas de investigación locales en 2026

Read more
Glossary

Panorama de proveedores de API de búsqueda (2026)

Read more
Solution

Cree un seguimiento de clasificación local confiable con la API de Scavio

Read more
Solution

Obtenga datos comerciales locales sin extraer Google Maps

Read more

Empieza a construir

Ofrezca a su configuración de codificación multiagente Pi o llama-swap una búsqueda en tiempo real. Generación de código básico con documentación en vivo y datos de paquetes.

Obtener clave API gratuitaLeer la documentacion
ScavioScavio

API de busqueda en tiempo real para agentes de IA. Busca en todas las plataformas, no solo en Google.

Producto

  • Funciones
  • Precios
  • Panel
  • Afiliados

Desarrolladores

  • Documentacion
  • Referencia de API
  • Inicio rapido
  • Integracion MCP
  • Python SDK

Alternativas

  • Alternativa a Tavily
  • Alternativa a SerpAPI
  • Alternativa a Firecrawl
  • Alternativa a Exa

Herramientas

  • Formateador JSON
  • cURL a codigo
  • Contador de tokens
  • Todas las herramientas

© 2026 Scavio. Todos los derechos reservados.

Featured on TAAFT
Terminos de servicioPolitica de privacidad