# phpLLP **Repository Path**: web/php-llp ## Basic Information - **Project Name**: phpLLP - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-07 - **Last Updated**: 2026-08-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # phpLLP [![PHP Version](https://img.shields.io/badge/php-%3E%3D7.4-8892BF.svg)](https://php.net/) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) 一个轻量级、零依赖的 PHP LLM 应用开发库。 ## 特性 - **零外部依赖**: 仅使用 PHP 原生功能(cURL、JSON、反射等) - **PHP 7.4+ 兼容**: 通过 `PhpVersion` 类处理版本差异 - **多 Provider 支持**: OpenAI、Anthropic、Mistral、Ollama - **完整功能**: 聊天、图像生成、语音转文字、嵌入生成、向量存储 - **Function Calling**: 内置工具调用和函数执行引擎 - **RAG 流程**: 检索增强生成,支持语义搜索和问答 - **多向量存储**: 文件系统、SQLite、PostgreSQL、Qdrant、Redis、Elasticsearch、Milvus、ChromaDB、AstraDB - **流式响应**: 支持 SSE 流式输出 ## 安装 ```bash composer require php-llp/php-llp ``` ## 配置参数 `LLP` 构造函数接收一个配置数组,以下是所有可用参数及其说明: | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `provider` | `string` | `openai` | LLM 服务提供商,可选值:`openai`、`anthropic`、`mistral`、`ollama` | | `api_key` | `string` | `''` | API 密钥,用于认证。Ollama 本地部署无需填写 | | `model` | `string` | `gpt-4o` | 使用的模型名称。各 Provider 默认值不同,详见下方 | | `base_url` | `string` | `''` | API 基础地址。留空则使用 Provider 默认地址。Ollama 默认 `http://localhost:11434` | | `temperature` | `float` | `0.7` | 控制输出随机性,范围 0.0~1.0。值越高回复越有创造性 | | `max_tokens` | `int` | `1024` | 最大生成 token 数 | | `stream` | `bool` | `false` | 是否启用流式响应 | | `timeout` | `int` | `30` | HTTP 请求超时时间(秒) | | `proxy` | `string\|null` | `null` | HTTP 代理地址,如 `http://127.0.0.1:7890` | | `headers` | `array` | `[]` | 自定义请求头,键值对格式 `['X-Custom' => 'value']` | | `collection` | `string` | `default` | 向量存储集合名称(用于 RAG/向量存储场景) | | `dimension` | `int` | `1536` | 向量维度,需与嵌入模型维度匹配 | | `path` | `string` | `./vector_store` | 文件系统向量存储路径 | | `db_path` | `string` | `:memory:` | SQLite 向量存储路径 | | `tenant` | `string` | `''` | ChromaDB Cloud 租户 ID(仅 ChromaDB Cloud 需要) | | `database` | `string` | `''` | ChromaDB Cloud 数据库名称(仅 ChromaDB Cloud 需要) | ### 各 Provider 默认值 | Provider | 默认 model | 默认 base_url | 认证方式 | |----------|-----------|---------------|----------| | `openai` | `gpt-4o` | `https://api.openai.com/v1` | `Authorization: Bearer {api_key}` | | `anthropic` | `claude-3-5-sonnet-20241022` | `https://api.anthropic.com` | `x-api-key: {api_key}` | | `mistral` | `mistral-large-latest` | `https://api.mistral.ai/v1` | `Authorization: Bearer {api_key}` | | `ollama` | `llama3.1` | `http://localhost:11434` | 无需认证 | ## 快速开始 ### 聊天对话 ```php use PhpLLP\LLP; $llp = new LLP([ 'provider' => 'openai', 'api_key' => 'your-api-key', 'model' => 'gpt-4o', ]); // 简单对话 $response = $llp->chat('你好,请介绍一下自己'); // 多轮对话 $messages = [ ['role' => 'system', 'content' => '你是一个有用的助手'], ['role' => 'user', 'content' => '什么是PHP?'], ]; $response = $llp->conversation($messages); ``` ### 图像生成 ```php $result = $llp->image('A beautiful sunset over the ocean', [ 'size' => '1024x1024', 'style' => 'vivid', ]); ``` ### 语音转文字 ```php $result = $llp->transcribe('/path/to/audio.mp3', [ 'language' => 'zh', ]); ``` ### 嵌入生成 ```php $embedding = $llp->embed('你好世界'); // 返回向量数组,可用于语义搜索和相似度计算 ``` ### 向量存储 + RAG ```php use PhpLLP\VectorStore\VectorStoreFactory; use PhpLLP\Embeddings\Document; // 创建向量存储(本地文件系统) $store = VectorStoreFactory::create('filesystem', [ 'collection' => 'my_knowledge', 'path' => './storage', ]); // 创建向量存储(ChromaDB 本地部署) $store = VectorStoreFactory::create('chroma', [ 'collection' => 'my_knowledge', 'base_url' => 'http://localhost:8000', ]); // 创建向量存储(ChromaDB Cloud) $store = VectorStoreFactory::create('chroma', [ 'collection' => 'my_knowledge', 'base_url' => 'https://api.trychroma.com', 'api_key' => 'ck-your-api-key', 'tenant' => 'your-tenant-id', 'database' => 'your-database-name', ]); // 添加文档 $doc = new Document([ 'content' => 'PHP是一种编程语言', 'embedding' => [0.1, 0.9, 0.3], 'metadata' => ['category' => 'tech'], ]); $store->addDocument($doc); // 语义搜索 $results = $store->similaritySearch($queryVector, 5, 0.5); // RAG 问答 $answer = $llp->ask('什么是PHP?', [ 'vector_store' => 'filesystem', ]); // RAG 问答(通过 LLP 统一入口使用 ChromaDB) $llp = new LLP([ 'vector_store' => 'chromadb', 'base_url' => 'https://api.trychroma.com', 'api_key' => 'ck-your-api-key', 'tenant' => 'your-tenant-id', 'database' => 'your-database-name', 'collection' => 'my_knowledge', ]); $answer = $llp->qa('什么是PHP?'); ``` ### 工具调用 ```php use PhpLLP\Tools\Builtin\Calculator; use PhpLLP\Tools\Builtin\WebPageFetcher; $llp->registerTool(new Calculator()); $llp->registerTool(new WebPageFetcher()); // LLM 自动调用工具 $result = $llp->chat('计算 (15 + 27) * 3 的结果,并获取 https://example.com 的内容'); ``` ## 架构 ``` ┌─────────────────────────────────────────────────┐ │ LLP 统一入口 │ ├─────────┬──────────┬──────────┬─────────────────┤ │ Chat │ Image │ Audio │ Embeddings │ ├─────────┴──────────┴──────────┴─────────────────┤ │ VectorStore 向量存储 │ ├─────────────────────────────────────────────────┤ │ FileSystem │ SQLite │ Qdrant │ Redis │ Milvus... │ └─────────────────────────────────────────────────┘ ``` ## 目录结构 ``` src/ ├── Chat/ # 聊天模块 │ ├── Provider/ # LLM Provider 实现 │ ├── FunctionCall/ # 工具调用子模块 │ └── Enum/ # 枚举常量 ├── Image/ # 图像模块 ├── Audio/ # 音频模块 ├── Embeddings/ # 嵌入模块 │ ├── Generator/ # 嵌入生成器 │ ├── Distances/ # 距离计算 │ ├── Splitter/ # 文档分割 │ ├── Formatter/ # 格式化 │ └── Reader/ # 数据读取 ├── VectorStore/ # 向量存储 ├── Query/ # 查询/RAG 模块 ├── Tools/ # 工具模块 ├── Http/ # HTTP 客户端 ├── Contracts/ # 接口定义 ├── Support/ # 工具类 ├── Exception/ # 异常类 └── LLP.php # 统一入口类 ``` ## 支持的 Provider | 类型 | Provider | 说明 | |------|----------|------| | Chat | OpenAI, Anthropic, Mistral, Ollama | 同步/流式响应 | | Image | OpenAI (DALL-E 3) | 图像生成 | | Audio | Whisper | 语音转文字 | | Embedding | OpenAI, Mistral, Ollama | 文本嵌入 | ## 支持的向量存储 | 存储 | 类型 | 说明 |测试 | |------|------|------|------| | FileSystem | 本地 | JSON 文件存储 | 已测试 | | SQLite | 本地 | PDO + 本地余弦计算 | 已测试 | | PostgreSQL | 远程 | pgvector 支持 | 待测试 | | Qdrant | 远程 | REST API | 已测试 | | Redis | 远程 | RediSearch | 已测试3.0 | | Elasticsearch | 远程 | NDJSON bulk API | 待测试 | | Milvus | 远程 | REST v2.4 | 已测试zilliz | | ChromaDB | 远程 | 多租户 REST API | 待测试 | | AstraDB | 远程 | Serverless 向量数据库 | 待测试 | ## 要求 - PHP >= 7.4 - cURL 扩展 - JSON 扩展 - mbstring 扩展(可选,用于多字节字符串处理) ## License MIT License. See [LICENSE](LICENSE) for details.