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')
]
]
];
核心使用场景
- 基础文本生成
$response = Prism::text()
->using(Provider::Anthropic, 'claude-3-5-sonnet-20241022')
->withPrompt('讲一个关于勇敢骑士的短故事')
->asText();
echo $response->text; // 获取生成文本
- 多模态分析(图像/音频/文档)
// 分析图像内容
Prism::text()
->withPrompt('描述这张图片中的物体', [
Image::fromLocalPath('/path/to/image.jpg')
])
->asText();
// 处理PDF文档
Prism::text()
->withPrompt('总结文档要点', [
Document::fromLocalPath('/path/to/report.pdf')
])
->asText();
- 上下文对话管理
$response = Prism::text()
->withMessages([
new UserMessage('什么是JSON?'),
new AssistantMessage('JSON是轻量级数据格式...'),
new UserMessage('能举个示例吗?')
])
->asText();
- 实时流式响应
// 服务端流式输出
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();
自定义模型集成
- 创建提供商类
class MyCustomProvider extends Provider
{
public function text(TextRequest $request): TextResponse
{
// 实现自定义API调用逻辑
}
}
- 注册服务提供者
$this->app['prism-manager']->extend('my-provider', function ($app, $config) {
return new MyCustomProvider($config['api_key']);
});
- 配置使用
Prism::text()
->using('my-provider', 'custom-model')
->withPrompt('你好,自定义AI!');
更多功能请查看官方文档 文档地址: https://prismphp.com/getting-started/introduction.html
无论是构建智能客服、内容生成器还是复杂AI工作流,Prism都能让Laravel开发者更专注于创造价值而非处理兼容性问题。立即通过composer require prism/prism开启你的AI集成之旅!