PHP SDK 集成教程

快速集成 LLM API 到您的 PHP 应用,支持 Laravel、Symfony 等主流框架

Composer安装

一行命令完成

简单配置

开箱即用

高性能

异步并发支持

框架集成

Laravel/Symfony

一、安装与配置

Composer安装

# 使用 Composer 安装
composer require n1n/llm-api-php

# 或者在 composer.json 中添加
{
    "require": {
        "n1n/llm-api-php": "^1.0"
    }
}

# 如果使用 Guzzle HTTP 客户端
composer require guzzlehttp/guzzle

系统要求

  • • PHP >= 7.4
  • • Composer 2.0+
  • • ext-json 扩展
  • • ext-curl 或 Guzzle HTTP 客户端

二、基础使用

快速开始

<?php
require_once 'vendor/autoload.php';

use N1N\LLMClient;
use N1N\Models\ChatMessage;

// 初始化客户端
$client = new LLMClient([
    'api_key' => 'your-api-key',
    'base_url' => 'https://api.n1n.ai/v1'
]);

try {
    // 基础对话
    $response = $client->chat()->create([
        'model' => 'gpt-3.5-turbo',
        'messages' => [
            ['role' => 'system', 'content' => '你是一个有帮助的助手'],
            ['role' => 'user', 'content' => '介绍一下PHP语言']
        ],
        'temperature' => 0.7,
        'max_tokens' => 500
    ]);
    
    echo $response->choices[0]->message->content;
    
    // 使用消息对象
    $messages = [
        new ChatMessage('system', '你是一个PHP专家'),
        new ChatMessage('user', '如何使用PHP连接数据库?')
    ];
    
    $response = $client->chat()->create([
        'model' => 'gpt-4o-mini',
        'messages' => $messages
    ]);
    
    // 获取使用统计
    echo "使用Token数: " . $response->usage->total_tokens . "\n";
    echo "成本: $" . $response->usage->cost . "\n";
    
} catch (Exception $e) {
    echo "错误: " . $e->getMessage();
}

三、流式响应

实时输出

<?php
use N1N\LLMClient;

$client = new LLMClient(['api_key' => 'your-api-key']);

// 流式响应
$stream = $client->chat()->createStream([
    'model' => 'gpt-3.5-turbo',
    'messages' => [
        ['role' => 'user', 'content' => '写一个长篇故事']
    ],
    'stream' => true
]);

// 处理流式数据
foreach ($stream as $chunk) {
    if (isset($chunk->choices[0]->delta->content)) {
        echo $chunk->choices[0]->delta->content;
        ob_flush(); // 立即输出到浏览器
        flush();
    }
}

// 使用回调处理流
$client->chat()->streamWithCallback(
    [
        'model' => 'gpt-3.5-turbo',
        'messages' => [['role' => 'user', 'content' => '你好']]
    ],
    function($chunk) {
        // 处理每个数据块
        if ($content = $chunk->choices[0]->delta->content ?? null) {
            echo $content;
        }
    },
    function($error) {
        // 错误处理
        echo "流错误: " . $error->getMessage();
    }
);

💡 流式响应提示

  • • 使用 ob_flush() 和 flush() 确保实时输出
  • • 设置 set_time_limit(0) 避免脚本超时
  • • 禁用输出缓冲:ob_end_flush()
  • • Nginx配置:proxy_buffering off;

四、框架集成

Laravel 集成

  • ✅ Service Provider 自动注册
  • ✅ Facade 门面支持
  • ✅ 队列任务集成
  • ✅ 缓存响应支持
  • ✅ 日志记录集成

Symfony 集成

  • ✅ Bundle 配置
  • ✅ 依赖注入容器
  • ✅ Event Dispatcher
  • ✅ Monolog 日志集成
  • ✅ 缓存组件支持

五、错误处理

认证错误 (401)

检查 API Key 是否正确配置

限流错误 (429)

实施重试机制,遵守 Retry-After 头

请求错误 (400)

验证请求参数格式和模型名称

服务器错误 (500)

实施指数退避重试策略

六、高级功能

Function Calling

调用自定义函数,扩展AI能力

批量处理

并发处理多个请求,提升效率

会话管理

维护对话上下文,智能对话

响应缓存

Redis/Memcached缓存优化

异步处理

ReactPHP异步非阻塞调用

队列任务

后台处理长时间运行任务

七、最佳实践

🔒 安全建议

  • ✅ 使用环境变量存储API Key
  • ✅ 实施请求签名验证
  • ✅ 设置IP白名单
  • ✅ 加密敏感数据传输
  • ✅ 定期轮换API密钥

⚡ 性能优化

  • ✅ 使用Redis缓存响应
  • ✅ 实施连接池
  • ✅ 异步并发请求
  • ✅ 合理设置超时时间
  • ✅ 使用队列处理批量任务

📦 推荐包

  • • guzzlehttp/guzzle - HTTP客户端
  • • predis/predis - Redis缓存
  • • react/event-loop - 异步处理
  • • symfony/cache - 缓存组件