人称外号大脸猫

Laravel开发者必看:用Prism轻松集成AI超能力

大型语言模型(LLMs)已彻底改变人机交互方式,让开发者能创建前所未有的AI驱动应用。但集成不同AI提供商(OpenAI、Anthropic等)往往意味着处理复杂的API差异和实现细节。Prism应运而生——这款Laravel包通过统一接口简化了LLM集成过程,让你专注于创新而非兼容性问题。

// 使用Prism的极简示例
$response = Prism::text()
    ->using(Provider::Anthropic, 'claude-3-7-sonnet-latest')
    ->withPrompt('用5岁孩子能懂的语言解释量子计算')
    ->asText();

核心优势

  • 统一接口 - 无缝切换OpenAI、Anthropic、Gemini等提供商
  • 多模态支持 - 同时处理文本、图像、音频和视频
  • 工具系统 - 创建自定义工具扩展AI能力
  • 流畅语法 - 优雅的链式调用简化开发
  • 可扩展性 - 轻松添加新提供商或自定义逻辑

统一AI接口 - 只需一次代码实现,自由切换OpenAI/Anthropic/Gemini等主流模型

// 多提供商切换示例
prism()->text()
    ->using(Provider::OpenAI, 'gpt-4') // 切换只需改这一行
    ->withPrompt('解释量子计算')
    ->asText();

多模态支持 - 同时处理文本/图像/音频/视频

->withPrompt('分析医学影像', [
    Image::fromLocalPath('xray.jpg'),
    Document::fromUrl('https://med-data.pdf')
])

智能工具系统 - 让AI调用你的业务逻辑

Tool::as('weather')
    ->withStringParameter('city', '城市名称')
    ->using(fn($city) => WeatherAPI::get($city));

实时流式响应 - 秒级获取AI生成内容

// 控制器中实现实时推送
return response()->eventStream(function() {
  foreach ($stream as $chunk) {
    yield $chunk->text; 
  }
});

安装

要求:

PHP ≥ 8.1 Laravel ≥ 9.0

composer require prism/prism
php artisan vendor:publish --tag=prism-config

配置:

配置config/prism.php管理不同AI提供商:

return [
    'providers' => [
        'anthropic' => [
            'api_key' => env('ANTHROPIC_API_KEY'),
            'version' => '2023-06-01'
        ],
        'openai' => [
            'api_key' => env('OPENAI_API_KEY')
        ]
    ]
];

核心使用场景

  1. 基础文本生成
$response = Prism::text()
    ->using(Provider::Anthropic, 'claude-3-5-sonnet-20241022')
    ->withPrompt('讲一个关于勇敢骑士的短故事')
    ->asText();

echo $response->text; // 获取生成文本
  1. 多模态分析(图像/音频/文档)
// 分析图像内容
Prism::text()
    ->withPrompt('描述这张图片中的物体', [
        Image::fromLocalPath('/path/to/image.jpg')
    ])
    ->asText();

// 处理PDF文档
Prism::text()
    ->withPrompt('总结文档要点', [
        Document::fromLocalPath('/path/to/report.pdf')
    ])
    ->asText();
  1. 上下文对话管理
$response = Prism::text()
    ->withMessages([
        new UserMessage('什么是JSON?'),
        new AssistantMessage('JSON是轻量级数据格式...'),
        new UserMessage('能举个示例吗?')
    ])
    ->asText();
  1. 实时流式响应
// 服务端流式输出
return response()->stream(function () {
    $stream = Prism::text()
        ->withPrompt('逐步解释量子计算')
        ->asStream();

    foreach ($stream as $chunk) {
        echo $chunk->text;
        ob_flush();
        flush();
    }
}, 200, [
    'Content-Type' => 'text/event-stream'
]);

自定义工具扩展

// 定义工具
$weatherTool = Tool::as('weather')
    ->for('获取实时天气')
    ->withStringParameter('city', '城市名称')
    ->using(function (string $city) {
        return "{$city}天气:晴,22°C";
    });

// 使用工具
$response = Prism::text()
    ->withTools([$weatherTool])
    ->withMaxSteps(3) // 限制最大交互次数
    ->withPrompt('巴黎现在的天气如何?')
    ->asText();

自定义模型集成

  1. 创建提供商类
class MyCustomProvider extends Provider
{
    public function text(TextRequest $request): TextResponse
    {
        // 实现自定义API调用逻辑
    }
}
  1. 注册服务提供者
$this->app['prism-manager']->extend('my-provider', function ($app, $config) {
    return new MyCustomProvider($config['api_key']);
});
  1. 配置使用
Prism::text()
    ->using('my-provider', 'custom-model')
    ->withPrompt('你好,自定义AI!');

更多功能请查看官方文档 文档地址: https://prismphp.com/getting-started/introduction.html

无论是构建智能客服、内容生成器还是复杂AI工作流,Prism都能让Laravel开发者更专注于创造价值而非处理兼容性问题。立即通过composer require prism/prism开启你的AI集成之旅!

copyright ©2025 ahimu.com all rights reserved 皖ICP备19021547号-1