SharpAPI Laravel 集成指南
欢迎来到sharpapi laravel 集成指南!该存储库提供了有关如何将 sharpapi 集成到下一个 laravel ai 应用程序中的全面的分步教程。无论您是希望通过**人工智能支持的功能**还是自动化工作流程来增强您的应用程序,本指南都将引导您完成从身份验证到进行 api 调用和处理响应的整个过程。
文章也作为 github 存储库发布在 https://github.com/sharpapi/laravel-ai-integration-guide。
目录
- 先决条件
- 设置 laravel 项目
- 安装 sharpapi php 客户端
- 配置
- 使用 sharpapi 进行身份验证
- 进行 api 调用
- 处理响应
- 错误处理
- 测试集成
- 高级用法
- 结论
- 支持
- 许可证
先决条件
开始之前,请确保您已满足以下要求:
设置 laravel 项目
如果你已经有 laravel 项目,可以跳过此步骤。否则,请按照以下说明创建一个新的 laravel 项目。
- 通过 composer 安装 laravel
composer create-project --prefer-dist laravel/laravel laravel-ai-integration-guide
- 导航到项目目录
cd laravel-ai-integration-guide
- 送达申请
php artisan serve
可以通过 http://localhost:8000 访问该应用程序。
安装 sharpapi php 客户端
要与 sharpapi 交互,您需要安装 sharpapi php 客户端库。
需要通过 composer 安装 sharpapi 包
composer require sharpapi/sharpapi-laravel-clientphp artisan vendor:publish --tag=sharpapi-laravel-client
配置
环境变量
在环境变量中存储 api 密钥等敏感信息是最佳实践。 laravel 使用 .env 文件进行特定于环境的配置。
- 打开 .env 文件
位于 laravel 项目的根目录中。
- 添加您的 sharpapi api 密钥
sharp_api_key=your_actual_sharpapi_api_key_here
注意:将此处的 your_actual_sharpapi_api_key_key_替换为您实际的 sharpapi api 密钥。
- 在代码中访问环境变量
laravel 提供了 env 辅助函数来访问环境变量。
$apikey = env('sharp_api_key');
使用 sharpapi 进行身份验证
需要进行身份验证才能安全地与 sharpapi 端点交互。
- 初始化 sharpapi 客户端
创建服务或直接在控制器中使用它。
<?php namespace appservices; use sharpapisharpapiservice; class sharpapiclient { protected $client; public function __construct() { $this->client = new sharpapiservice(env('sharp_api_key')); } public function getclient() { return $this->client; } }
- 将服务绑定到服务提供者中(可选)
这允许您在需要的地方注入服务。
<?php namespace appproviders; use illuminatesupportserviceprovider; use appservicessharpapiclient; class appserviceprovider extends serviceprovider { public function register() { $this->app->singleton(sharpapiclient::class, function ($app) { return new sharpapiclient(); }); } public function boot() { // } }
- 在控制器中使用服务
<?php namespace apphttpcontrollers; use illuminatehttpequest; use appservicessharpapiclient; class sharpapicontroller extends controller { protected $sharpapi; public function __construct(sharpapiclient $sharpapi) { $this->sharpapi = $sharpapi->getclient(); } public function ping() { $response = $this->sharpapi->ping(); return response()->json($response); } }
- 定义路线
将路由添加到routes/web.php或routes/api.php:
use apphttpcontrollerssharpapicontroller; route::get('/sharpapi/ping', [sharpapicontroller::class, 'ping']);
进行 api 调用
经过身份验证后,您可以开始对各种 sharpapi 端点进行 api 调用。以下是如何与不同端点交互的示例。
示例:生成职位描述
- 创建作业描述参数 dto
<?php namespace apphttpcontrollers; use illuminatehttpequest; use appservicessharpapiclient; use sharpapidtojobdescriptionparameters; class sharpapicontroller extends controller { protected $sharpapi; public function __construct(sharpapiclient $sharpapi) { $this->sharpapi = $sharpapi->getclient(); } public function generatejobdescription() { $jobdescriptionparams = new jobdescriptionparameters( "software engineer", "tech corp", "5 years", "bachelor's degree in computer science", "full-time", [ "develop software applications", "collaborate with cross-functional teams", "participate in agile development processes" ], [ "proficiency in php and laravel", "experience with restful apis", "strong problem-solving skills" ], "usa", true, // isremote true, // hasbenefits "enthusiastic", "category c driving license", "english" ); $statusurl = $this->sharpapi->generatejobdescription($jobdescriptionparams); $resultjob = $this->sharpapi->fetchresults($statusurl); return response()->json($resultjob->getresultjson()); } }
- 定义路线
route::get('/sharpapi/generate-job-description', [sharpapicontroller::class, 'generatejobdescription']);
- 访问端点
访问 http://localhost:8000/sharpapi/generate-job-description 查看生成的职位描述。
处理响应
sharpapi 响应通常封装在作业对象中。要有效处理这些响应:
- 理解响应结构
{ "id": "uuid", "type": "jobtype", "status": "completed", "result": { // result data } }
- 访问结果
使用提供的方法访问结果数据。
$resultjob = $this->sharpapi->fetchresults($statusurl); $resultdata = $resultjob->getresultobject(); // as a php object // or $resultjson = $resultjob->getresultjson(); // as a json string
- 控制器中的用法示例
public function generatejobdescription() { // ... (initialize and make api call) if ($resultjob->getstatus() === 'completed') { $resultdata = $resultjob->getresultobject(); // process the result data as needed return response()->json($resultdata); } else { return response()->json(['message' => 'job not completed yet.'], 202); } }
错误处理
正确的错误处理可确保您的应用程序能够妥善处理 api 交互期间出现的问题。
- 捕获异常
将 api 调用包装在 try-catch 块中以处理异常。
public function generatejobdescription() { try { // ... (initialize and make api call) $resultjob = $this->sharpapi->fetchresults($statusurl); return response()->json($resultjob->getresultjson()); } catch (exception $e) { return response()->json([ 'error' => 'an error occurred while generating the job description.', 'message' => $e->getmessage() ], 500); } }
- 处理 api 错误
检查作业的状态,并针对不同的状态进行相应的处理。
if ($resultjob->getstatus() === 'completed') { // handle success } elseif ($resultjob->getstatus() === 'failed') { // handle failure $error = $resultjob->getresultobject()->error; return response()->json(['error' => $error], 400); } else { // handle other statuses (e.g., pending, in progress) return response()->json(['message' => 'job is still in progress.'], 202); }
测试集成
测试对于确保您与 sharpapi 的集成按预期工作至关重要。
- 编写单元测试
使用 laravel 的内置测试工具为 sharpapi 集成编写单元测试。
<?php namespace testseature; use tests estcase; use appservicessharpapiclient; use sharpapidtojobdescriptionparameters; class sharpapitest extends testcase { protected $sharpapi; protected function setup(): void { parent::setup(); $this->sharpapi = new sharpapiclient(); } public function testping() { $response = $this->sharpapi->ping(); $this->assertequals('ok', $response['status']); } public function testgeneratejobdescription() { $jobdescriptionparams = new jobdescriptionparameters( "backend developer", "innovatetech", "3 years", "bachelor's degree in computer science", "full-time", ["develop apis", "optimize database queries"], ["proficiency in php and laravel", "experience with restful apis"], "usa", true, true, "professional", "category b driving license", "english" ); $statusurl = $this->sharpapi->generatejobdescription($jobdescriptionparams); $resultjob = $this->sharpapi->fetchresults($statusurl); $this->assertequals('completed', $resultjob->getstatus()); $this->assertnotempty($resultjob->getresultobject()); } // add more tests for other methods... }
- 运行测试
使用 phpunit 执行测试。
./vendor/bin/phpunit
高级用法
异步请求
要同时处理多个 api 请求,请考虑使用 laravel 队列实现异步处理。
- 设置队列
在 .env 文件中配置队列驱动程序。
queue_connection=database
运行必要的迁移。
php artisan queue:table php artisan migrate
- 创建工作
php artisan make:job processsharpapirequest
<?php namespace appjobs; use illuminateusqueueable; use illuminatecontractsqueueshouldqueue; use illuminateoundationusdispatchable; use illuminatequeueinteractswithqueue; use illuminatequeueserializesmodels; use appservicessharpapiclient; use sharpapidtojobdescriptionparameters; class processsharpapirequest implements shouldqueue { use dispatchable, interactswithqueue, queueable, serializesmodels; protected $params; public function __construct(jobdescriptionparameters $params) { $this->params = $params; } public function handle(sharpapiclient $sharpapi) { $statusurl = $sharpapi->generatejobdescription($this->params); $resultjob = $sharpapi->fetchresults($statusurl); // handle the result... } }
- 派遣工作
use appjobsprocesssharpapirequest; public function generatejobdescriptionasync() { $jobdescriptionparams = new jobdescriptionparameters( // ... parameters ); processsharpapirequest::dispatch($jobdescriptionparams); return response()->json(['message' => 'job dispatched successfully.']); }
- 运行队列工作线程
php artisan queue:work
缓存响应
为了优化性能并减少冗余 api 调用,请实施缓存。
- 使用 laravel 的缓存外观
use illuminatesupportacadescache; public function generatejobdescription() { $cachekey = 'job_description_' . md5(json_encode($jobdescriptionparams)); $result = cache::remember($cachekey, 3600, function () use ($jobdescriptionparams) { $statusurl = $this->sharpapi->generatejobdescription($jobdescriptionparams); $resultjob = $this->sharpapi->fetchresults($statusurl); return $resultjob->getresultjson(); }); return response()->json(json_decode($result, true)); }
- 使缓存失效
底层数据发生变化时,确保相关缓存失效。
Cache::forget('job_description_' . md5(json_encode($jobDescriptionParams)));
结论
将 sharpapi 集成到您的 laravel 应用程序中可以解锁大量人工智能驱动的功能,增强您的应用程序的功能并提供无缝的工作流程自动化。本指南引导您完成从设置身份验证到进行 api 调用和处理响应的基本步骤。通过提供的示例和最佳实践,您已经准备好在 laravel 项目中利用 sharpapi 的强大功能。
支持
如果您遇到任何问题或对集成过程有疑问,请随时在 github 存储库上提出问题,或通过 contact@sharpapi.com 联系我们的支持团队。
执照
该项目已获得 mit 许可。