use LLPhant\DocumentLoader\FileDataReader;
use LLPhant\DocumentSplitter\DocumentSplitter;
use LLPhant\Embeddings\EmbeddingGenerator\OpenAIEmbeddingGenerator; // o el que uses
use LLPhant\Embeddings\VectorStores\Redis\RedisVectorStore; // ejemplo
// Cargar varias fuentes en un solo vector store
$loader = new FileDataReader(__DIR__ . '/data/'); // carpeta con PDFs, .txt, .docx, etc.
$documents = $loader->getDocuments();// Carga automáticamente todos los archivos soportados
// Dividir en chunks
$splitter = new DocumentSplitter(chunkSize: 800, chunkOverlap: 100);
$chunks = $splitter->splitDocuments($documents);
// Generar embeddings e indexar
$embeddingGenerator = new OpenAIEmbeddingGenerator(['model' => 'text-embedding-3-small']);
$vectorStore = new RedisVectorStore(host: '127.0.0.1', port: 6379);
$vectorStore->addDocuments($embeddingGenerator, $chunks);
echo count($chunks) . " chunks indexados desde múltiples fuentes.\n";
Fuentes soportadas actualmente por "// Ejemplo: Cargar diferentes tipos de fuentes
// 1. Documentos (PDFs, manuales, contratos)
$docsLoader = new FileDataReader(__DIR__ . '/documentos/');
$docs = $docsLoader->getDocuments();
// 2. Datos estructurados (base de datos)
$productos = // consulta a tu BD con Laravel/Symfony y conviértelos a texto
$productosDocs = array_map(fn($p) => new Document(
content: "Producto: {$p['nombre']} - Precio: {$p['precio']} - Stock: {$p['stock']}",
metadata: ['source' => 'database', 'type' => 'producto']
), $productos);
// 3. Contenido web o APIs (usando tools)
$webContent = // puedes crear un Tool personalizado que haga scraping o llame a una API
// Combinar todo
$allDocuments = array_merge($docs, $productosDocs /*, $otros */);
$splitter = new DocumentSplitter(800, 100);
$chunks = $splitter->splitDocuments($allDocuments);
// Indexar en el vector store
$vectorStore->addDocuments($embeddingGenerator, $chunks);
use LLPhant\AutoPHP;
use LLPhant\Tool\SerpApiSearch; // ejemplo de tool web
use LLPhant\Chat\FunctionInfo\FunctionBuilder;
// Crear tools personalizadas
class DatabaseTool {
public function searchProducts(string $query): string {
// Consulta tu BD y devuelve resultados en texto
return "Resultados de productos para '$query': ...";
}
}
$tools = [
FunctionBuilder::buildFunctionInfo(new DatabaseTool(), 'searchProducts'),
FunctionBuilder::buildFunctionInfo(new SerpApiSearch(), 'googleSearch'), // búsqueda web
// Puedes crear más tools: consulta a API interna, leer Excel, etc.
];
$agent = new AutoPHP(
objective: "Ayuda al usuario con información de productos, documentación y datos actualizados de internet",
tools: $tools
);
$respuesta = $agent->run();
Recomendaciones para Agentes con múltiples fuentes: