بخش بزرگی از وب فارسی روی PHP و لاراول ساخته شده است. برای صدا زدن API لازم نیست کتابخانهی خاصی داشته باشید؛ افزونهی cURL که همراه PHP است یا Guzzle کافی است. اگر بستهی جامعهی openai-php/client را میپسندید، آن هم با تغییر آدرس پایه کار میکند.
در محیطهای اشتراکی (هاست cPanel) فراموش نکنید که extension=curl فعال باشد و timeout اسکریپت برای پاسخهای طولانی بالا برده شود.
پیشنیازها
- یک حساب پیکو هوش و یک کلید API از داشبورد (کلید فقط یکبار کامل نمایش داده میشود).
- شناسهی دقیق مدل از کاتالوگ؛ در مثالها از gpt-6-sol و claude-sonnet-5-5 استفاده شده است.
- کمی موجودی در کیف پول تومانی یا اعتبار؛ تعرفه را در صفحهی قیمتها ببینید.
راهاندازی گامبهگام
درخواست ساده با cURL داخلی
بدون هیچ وابستگی؛ فقط افزونهی curl.
chat.php <?php $apiKey = getenv("PICOAI_API_KEY") ?: "YOUR_API_KEY"; $payload = json_encode([ "model" => "gpt-6-sol", "messages" => [["role" => "user", "content" => "سلام!"]], ], JSON_UNESCAPED_UNICODE); $ch = curl_init("https://api.picoai.ir/v1/chat/completions"); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 60, CURLOPT_HTTPHEADER => [ "Authorization: Bearer " . $apiKey, "Content-Type: application/json", ], CURLOPT_POSTFIELDS => $payload, ]); $body = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); $data = json_decode($body, true); echo $status === 200 ? $data["choices"][0]["message"]["content"] : ($data["error"] ?? "خطا");استفاده از Guzzle
در لاراول Guzzle نصب است. پایهی آدرس را یک بار در کلاینت بدهید.
Guzzle use GuzzleHttp\Client; $client = new Client([ "base_uri" => "https://api.picoai.ir/v1/", "headers" => ["Authorization" => "Bearer " . env("PICOAI_API_KEY")], "timeout" => 60, ]); $res = $client->post("chat/completions", [ "json" => ["model" => "gpt-6-sol", "messages" => [["role" => "user", "content" => "سلام"]]], ]); $data = json_decode((string) $res->getBody(), true);بستهی openai-php/client (اختیاری)
این بستهی جامعه با withBaseUri میتواند آدرس را بپذیرد؛ آدرس را بدون https:// بدهید. نسخهی بسته را از مستندات آن بررسی کنید.
composer + PHP // composer require openai-php/client $client = OpenAI::factory() ->withApiKey(getenv("PICOAI_API_KEY")) ->withBaseUri("api.picoai.ir/v1") ->make(); $res = $client->chat()->create([ "model" => "gpt-6-sol", "messages" => [["role" => "user", "content" => "سلام"]], ]); echo $res->choices[0]->message->content;ذخیرهی کلید در لاراول
کلید را در فایل .env قرار دهید و از config() بخوانید تا وارد گیت نشود.
.env PICOAI_API_KEY=YOUR_API_KEY
تست سریع اتصال
پیش از نوشتن منطق برنامه، یک بار فهرست مدلها را بگیرید. اگر پاسخ ۲۰۰ و فهرستی از شناسهها برگشت، کلید، شبکه و آدرس درست است و هر مشکل بعدی مربوط به تنظیمات PHP خواهد بود.
curl https://api.picoai.ir/v1/models \
-H "Authorization: Bearer YOUR_API_KEY"نکتههای کاربردی برای PHP
- JSON_UNESCAPED_UNICODE باعث میشود متن فارسی در بدنه خوانا بماند و حجم درخواست کمتر شود.
- برای کارهای طولانی از صف (Queue) استفاده کنید تا کاربر منتظر پاسخ مدل نماند.
- پاسخهای پرتکرار را کش کنید؛ هم سرعت بیشتر میشود و هم هزینه کمتر.
عیبیابی
خطای SSL certificate problem
بستهی گواهی CA سرور قدیمی است. آن را بهروز کنید؛ غیرفعال کردن CURLOPT_SSL_VERIFYPEER راه امنی نیست.
خطای Maximum execution time
max_execution_time را برای آن اسکریپت بالا ببرید یا درخواست را به صف بسپارید.
متن فارسی بهصورت علامت سؤال برمیگردد
خروجی را با charset=utf-8 نمایش دهید و json_decode را روی رشتهی خام UTF-8 اجرا کنید.
خطای 401 (Unauthorized)
کلید اشتباه، غیرفعال یا همراه فاصلهی اضافه است. در داشبورد کلید را بررسی و در صورت نیاز یک کلید تازه بسازید.
خطای 429 (Rate limit)
تعداد درخواستهای شما در دقیقه از سقف کلید بیشتر شده است. چند ثانیه صبر و دوباره تلاش کنید یا سقف کلید را در داشبورد بررسی کنید.
هزینه و صورتحساب
هر درخواست قبل از اجرا مقداری از موجودی را رزرو میکند و پس از پاسخ موفق بر پایهی توکنهای واقعی تسویه میشود؛ مابهالتفاوت برمیگردد و درخواست ناموفق چیزی کم نمیکند. جدول قیمت هر مدل در صفحهی قیمتها منتشر شده و مصرف هر درخواست در داشبورد قابل مشاهده است. اگر قبلاً از سرویس دیگری استفاده میکردید، راهنمای مهاجرت و صفحهی مقایسه را ببینید.
پرسشهای متداول
آیا در هاست اشتراکی کار میکند؟
اگر هاست خروجی HTTPS به api.picoai.ir را مسدود نکند و curl فعال باشد، بله.
برای وردپرس چطور؟
از wp_remote_post با همان هدرها و بدنهی JSON استفاده کنید و کلید را در wp-config.php نگه دارید.
استریم در PHP ممکن است؟
بله با CURLOPT_WRITEFUNCTION، اما بافر خروجی PHP و وبسرور باید خاموش باشد. برای شروع، حالت غیراستریم سادهتر است.
اگر درخواست ناموفق باشد هزینه کم میشود؟
خیر. در پیکو هوش هزینه ابتدا رزرو و پس از پاسخ موفق بر اساس مصرف واقعی تسویه میشود؛ درخواست ناموفق بدون کسر هزینه است.
PHP را همین حالا وصل کنید
با ساخت حساب و یک کلید، در چند دقیقه اولین پاسخ را بگیرید. اگر ابزار دیگری دارید، فهرست کامل اتصالها را ببینید.
راهنمای ابزارهای مرتبط
- اتصال cURLفراخوانی مستقیم API پیکو هوش از ترمینال
- اتصال OpenAI Python SDKکتابخانهی رسمی OpenAI برای پایتون با پیکو هوش
- اتصال n8nاتوماسیون n8n با گره OpenAI و آدرس پایهی پیکو هوش
- اتصال Postmanآزمایش API پیکو هوش با Postman و متغیرهای محیطی
- اتصال OpenAI Node.js SDKکتابخانهی رسمی OpenAI برای Node.js و TypeScript
- اتصال Goاستفاده از API پیکو هوش در Go با go-openai
- مقایسهی پیکو هوش با سرویسهای مشابهمقایسهی بیطرفانه و مبتنی بر اطلاعات عمومی
- Base URL چیست؟تعریف و کاربرد آدرس پایه در APIهای سازگار