sanjarani/openai-php

A PHP package for easy integration with OpenAI API, including GPT-4, Assistants, and Tools support

1.2.0 2025-04-02 17:58 UTC

README

نسخه دانلودها مجوز نسخه PHP

English | فارسی

English

A PHP package for OpenAI API integration with Laravel support. This package supports all OpenAI endpoints and is designed for use in PHP and Laravel projects.

Features & Capabilities

  • Chat with OpenAI Models

    • Create conversations with various models
    • Streaming support for live responses
    • Configure temperature and max_tokens parameters
  • Text Completion

    • Automatic text completion
    • Streaming support
    • Various output parameter configurations
  • Text to Vector Conversion

    • Create embeddings for text
    • Suitable for NLP and semantic search
  • Image Operations

    • Generate images from text
    • Create variations of existing images
    • Edit images with masks
  • Content Moderation

    • Detect inappropriate content
    • Automatic text filtering
  • Custom Model Training

    • Create custom models
    • Manage fine-tuning process
    • Monitor and control training
  • Model Management

    • Access model list
    • Retrieve specific model information
    • Delete custom models
  • Assistants & Tools

    • Create intelligent assistants
    • Use various tools
      • Function Tool for custom functions
      • Retrieval Tool for document search
      • Code Interpreter for code execution

Author

Installation

composer require sanjarani/openai-php

Configuration

In Laravel

The package is automatically registered in Laravel. Configure your settings in the .env file:

OPENAI_API_KEY=your-api-key-here
OPENAI_ORGANIZATION_ID=your-organization-id
OPENAI_API_VERSION=v1
OPENAI_BASE_URL=https://api.openai.com
OPENAI_TIMEOUT=30

# Default Models Configuration
OPENAI_CHAT_MODEL=gpt-3.5-turbo
OPENAI_COMPLETION_MODEL=text-davinci-003
OPENAI_EMBEDDING_MODEL=text-embedding-ada-002
OPENAI_IMAGE_MODEL=dall-e-3
OPENAI_FINE_TUNE_MODEL=gpt-3.5-turbo

In Regular PHP Projects

use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here',
    'organization_id' => 'your-organization-id',
    'api_version' => 'v1',
    'base_url' => 'https://api.openai.com',
    'timeout' => 30,
    'models' => [
        'chat' => 'gpt-3.5-turbo',
        'completion' => 'text-davinci-003',
        'embedding' => 'text-embedding-ada-002',
        'image' => 'dall-e-3',
        'fine_tune' => 'gpt-3.5-turbo'
    ]
]);

Usage Examples

Chat Endpoint

// Simple PHP
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// Using default model
$response = $openai->chat()->create([
    'messages' => [
        ['role' => 'system', 'content' => 'You are a helpful assistant.'],
        ['role' => 'user', 'content' => 'What is the capital of France?']
    ],
    'max_tokens' => 100
]);

// Using specific model and temperature
$response = $openai->chat()->create([
    'model' => 'gpt-4',
    'messages' => [
        ['role' => 'user', 'content' => 'Tell me a story']
    ],
    'temperature' => 0.9
]);

// Streaming example
foreach ($openai->chat()->createStream([
    'messages' => [
        ['role' => 'user', 'content' => 'Tell me a story']
    ]
]) as $chunk) {
    echo $chunk['choices'][0]['delta']['content'] ?? '';
}

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// Using default model
$response = OpenAI::chat()->create([
    'messages' => [
        ['role' => 'system', 'content' => 'You are a helpful assistant.'],
        ['role' => 'user', 'content' => 'What is the capital of France?']
    ],
    'max_tokens' => 100
]);

// Using specific model and temperature
$response = OpenAI::chat()->create([
    'model' => 'gpt-4',
    'messages' => [
        ['role' => 'user', 'content' => 'Tell me a story']
    ],
    'temperature' => 0.9
]);

// Streaming example
foreach (OpenAI::chat()->createStream([
    'messages' => [
        ['role' => 'user', 'content' => 'Tell me a story']
    ]
]) as $chunk) {
    echo $chunk['choices'][0]['delta']['content'] ?? '';
}

Completion Endpoint

// Simple PHP
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// Basic completion
$response = $openai->completion()->create([
    'prompt' => 'Write a short story about a robot learning to paint.',
    'max_tokens' => 200,
    'temperature' => 0.7
]);

// Streaming example
foreach ($openai->completion()->createStream([
    'prompt' => 'Write a poem about spring.'
]) as $chunk) {
    echo $chunk['choices'][0]['text'] ?? '';
}

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// Basic completion
$response = OpenAI::completion()->create([
    'prompt' => 'Write a short story about a robot learning to paint.',
    'max_tokens' => 200,
    'temperature' => 0.7
]);

// Streaming example
foreach (OpenAI::completion()->createStream([
    'prompt' => 'Write a poem about spring.'
]) as $chunk) {
    echo $chunk['choices'][0]['text'] ?? '';
}

Embedding Endpoint

// Simple PHP
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

$response = $openai->embedding()->create([
    'input' => 'The quick brown fox jumps over the lazy dog.'
]);

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

$response = OpenAI::embedding()->create([
    'input' => 'The quick brown fox jumps over the lazy dog.'
]);

Image Endpoint

// Simple PHP
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// Generate an image
$response = $openai->image()->create([
    'prompt' => 'A beautiful sunset over mountains, digital art style',
    'n' => 1,
    'size' => '1024x1024'
]);

// Create image variation
$response = $openai->image()->createVariation([
    'image' => 'path/to/image.png',
    'n' => 1,
    'size' => '1024x1024'
]);

// Edit an image
$response = $openai->image()->edit([
    'image' => 'path/to/image.png',
    'mask' => 'path/to/mask.png',
    'prompt' => 'Add a rainbow to the sky',
    'n' => 1,
    'size' => '1024x1024'
]);

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// Generate an image
$response = OpenAI::image()->create([
    'prompt' => 'A beautiful sunset over mountains, digital art style',
    'n' => 1,
    'size' => '1024x1024'
]);

// Create image variation
$response = OpenAI::image()->createVariation([
    'image' => 'path/to/image.png',
    'n' => 1,
    'size' => '1024x1024'
]);

// Edit an image
$response = OpenAI::image()->edit([
    'image' => 'path/to/image.png',
    'mask' => 'path/to/mask.png',
    'prompt' => 'Add a rainbow to the sky',
    'n' => 1,
    'size' => '1024x1024'
]);

Moderation Endpoint

// Simple PHP
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

$response = $openai->moderation()->create([
    'input' => 'This is a test message that might contain inappropriate content.'
]);

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

$response = OpenAI::moderation()->create([
    'input' => 'This is a test message that might contain inappropriate content.'
]);

FineTune Endpoint

// Simple PHP
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// Create a fine-tuning job
$response = $openai->fineTune()->create([
    'training_file' => 'file-abc123',
    'model' => 'gpt-3.5-turbo'
]);

// List fine-tuning jobs
$response = $openai->fineTune()->list();

// Retrieve a fine-tuning job
$response = $openai->fineTune()->retrieve('ft-abc123');

// Cancel a fine-tuning job
$response = $openai->fineTune()->cancel('ft-abc123');

// List fine-tuning events
$response = $openai->fineTune()->listEvents('ft-abc123');

// Delete a fine-tuned model
$response = $openai->fineTune()->delete('ft-abc123');

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// Create a fine-tuning job
$response = OpenAI::fineTune()->create([
    'training_file' => 'file-abc123',
    'model' => 'gpt-3.5-turbo'
]);

// List fine-tuning jobs
$response = OpenAI::fineTune()->list();

// Retrieve a fine-tuning job
$response = OpenAI::fineTune()->retrieve('ft-abc123');

// Cancel a fine-tuning job
$response = OpenAI::fineTune()->cancel('ft-abc123');

// List fine-tuning events
$response = OpenAI::fineTune()->listEvents('ft-abc123');

// Delete a fine-tuned model
$response = OpenAI::fineTune()->delete('ft-abc123');

Model Endpoint

// Simple PHP
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// List all models
$response = $openai->model()->list();

// Retrieve a model
$response = $openai->model()->retrieve('gpt-3.5-turbo');

// Delete a model
$response = $openai->model()->delete('ft-abc123');

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// List all models
$response = OpenAI::model()->list();

// Retrieve a model
$response = OpenAI::model()->retrieve('gpt-3.5-turbo');

// Delete a model
$response = OpenAI::model()->delete('ft-abc123');

Assistants & Tools

// PHP ساده
use Sanjarani\OpenAI\OpenAI;
use Sanjarani\OpenAI\Tools\FunctionTool;
use Sanjarani\OpenAI\Tools\RetrievalTool;
use Sanjarani\OpenAI\Tools\CodeInterpreterTool;

$openai = new OpenAI(['api_key' => 'your-api-key']);

// ایجاد ابزارها
$weatherTool = FunctionTool::create(
    'get_weather',
    'دریافت آب و هوای فعلی در یک مکان',
    [
        'location' => [
            'type' => 'string',
            'description' => 'شهر و استان، مثال: تهران، ایران',
            'required' => true
        ],
        'unit' => [
            'type' => 'string',
            'enum' => ['celsius', 'fahrenheit'],
            'description' => 'واحد دما',
            'required' => false
        ]
    ]
);

// ابزار جستجو در اسناد
$retrievalTool = RetrievalTool::create();

// ابزار اجرای کد
$codeInterpreterTool = CodeInterpreterTool::create();

// ایجاد یک دستیار با چندین ابزار
$assistant = $openai->assistants()->create([
    'name' => 'دستیار چند منظوره',
    'instructions' => 'شما یک دستیار چند منظوره هستید که می‌توانید در زمینه اطلاعات آب و هوا، جستجوی اسناد و اجرای کد کمک کنید.',
    'model' => 'gpt-4-turbo-preview',
    'tools' => [$weatherTool, $retrievalTool, $codeInterpreterTool]
]);

// لیست تمام دستیارها
$assistants = $openai->assistants()->list();

// دریافت یک دستیار خاص
$assistant = $openai->assistants()->retrieve('asst_abc123');

// به‌روزرسانی یک دستیار
$updatedAssistant = $openai->assistants()->update('asst_abc123', [
    'name' => 'دستیار به‌روز شده'
], [$weatherTool, $retrievalTool]);

// حذف یک دستیار
$openai->assistants()->delete('asst_abc123');

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;
use Sanjarani\OpenAI\Tools\FunctionTool;
use Sanjarani\OpenAI\Tools\RetrievalTool;
use Sanjarani\OpenAI\Tools\CodeInterpreterTool;

// ایجاد ابزارها
$weatherTool = FunctionTool::create(
    'get_weather',
    'دریافت آب و هوای فعلی در یک مکان',
    [
        'location' => [
            'type' => 'string',
            'description' => 'شهر و استان',
            'required' => true
        ]
    ]
);

$retrievalTool = RetrievalTool::create();
$codeInterpreterTool = CodeInterpreterTool::create();

// ایجاد یک دستیار با ابزارها
$assistant = OpenAI::assistants()->create([
    'name' => 'دستیار چند منظوره',
    'instructions' => 'شما در زمینه‌های مختلف کمک می‌کنید',
    'model' => 'gpt-4-turbo-preview',
    'tools' => [$weatherTool, $retrievalTool, $codeInterpreterTool]
]);

// لیست تمام دستیارها
$assistants = OpenAI::assistants()->list();

// دریافت یک دستیار خاص
$assistant = OpenAI::assistants()->retrieve('asst_abc123');

// به‌روزرسانی یک دستیار
$updatedAssistant = OpenAI::assistants()->update('asst_abc123', [
    'name' => 'دستیار به‌روز شده'
], [$weatherTool, $retrievalTool]);

// حذف یک دستیار
OpenAI::assistants()->delete('asst_abc123');

ابزارهای موجود

  1. Function Tool: تعریف توابع سفارشی که دستیار می‌تواند از آنها استفاده کند
$functionTool = FunctionTool::create(
    'نام_تابع',
    'توضیحات تابع',
    [
        'نام_پارامتر' => [
            'type' => 'string|number|boolean|array|object',
            'description' => 'توضیحات پارامتر',
            'required' => true|false
        ]
    ]
);
  1. Retrieval Tool: امکان جستجو و بازیابی اطلاعات از فایل‌های آپلود شده
$retrievalTool = RetrievalTool::create();
  1. Code Interpreter Tool: امکان نوشتن، اجرا و اشکال‌زدایی کد
$codeInterpreterTool = CodeInterpreterTool::create();

ویژگی‌ها

Chat Endpoint

  • ایجاد چت
  • پشتیبانی از streaming

Completion Endpoint

  • تکمیل متن
  • پشتیبانی از streaming

Embedding Endpoint

  • تبدیل متن به بردار

Image Endpoint

  • تولید تصویر
  • ایجاد تغییرات در تصویر
  • ویرایش تصویر

Moderation Endpoint

  • بررسی محتوای نامناسب

FineTune Endpoint

  • ایجاد مدل سفارشی
  • لیست مدل‌های سفارشی
  • دریافت اطلاعات مدل
  • لغو آموزش
  • لیست رویدادها
  • حذف مدل

Model Endpoint

  • لیست مدل‌ها
  • دریافت اطلاعات مدل
  • حذف مدل

Assistants & Tools

  • ایجاد دستیارها
  • به‌روزرسانی دستیارها
  • حذف دستیارها

General Features

  • پشتیبانی کامل از API OpenAI
  • سازگار با Laravel
  • تست‌های واحد
  • مستندات کامل
  • پشتیبانی از PSR-4
  • مدیریت خطاها
  • پشتیبانی از streaming (در مواردی که API OpenAI از آن پشتیبانی می‌کند)

API Version Support

  • پشتیبانی از نسخه‌های v1 و v2
  • آدرس پایه قابل تنظیم
  • پشتیبانی از شناسه سازمان
  • زمان‌سنج قابل تنظیم

Error Handling

  • مدیریت جامع خطاها
  • مدیریت خطاهای HTTP
  • پاسخ‌های خطای API
  • مدیریت زمان‌سنج شبکه

Security

  • مدیریت امن کلید API
  • کنترل دسترسی در سطح سازمان
  • ارتباط فقط از طریق HTTPS
  • اعتبارسنجی ورودی

Performance

  • استخر اتصال
  • تنظیم زمان‌سنج درخواست
  • پشتیبانی از streaming پاسخ
  • مصرف کارآمد حافظه

Testing

composer test

Support

For support and contact with the author, you can use the following methods:

License

MIT

Company

This package is developed by ARYMU LLC.

فارسی

یک پکیج PHP برای کار با API OpenAI که با Laravel سازگار است. این پکیج از تمام endpoint های OpenAI پشتیبانی می‌کند و برای استفاده در پروژه‌های PHP و Laravel طراحی شده است.

امکانات و قابلیت‌ها

  • چت و گفتگو با مدل‌های OpenAI

    • ایجاد چت با مدل‌های مختلف
    • پشتیبانی از streaming برای پاسخ‌های زنده
    • تنظیم پارامترهای temperature و max_tokens
  • تکمیل متن

    • تکمیل خودکار متن
    • پشتیبانی از streaming
    • تنظیم پارامترهای مختلف برای خروجی
  • تبدیل متن به بردار

    • ایجاد embedding برای متن‌ها
    • مناسب برای پردازش زبان طبیعی و جستجوی معنایی
  • کار با تصاویر

    • تولید تصویر از متن
    • ایجاد تغییرات در تصاویر موجود
    • ویرایش تصاویر با ماسک
  • بررسی محتوا

    • تشخیص محتوای نامناسب
    • فیلترینگ خودکار متن
  • آموزش مدل‌های سفارشی

    • ایجاد مدل‌های اختصاصی
    • مدیریت فرآیند fine-tuning
    • کنترل و نظارت بر آموزش
  • مدیریت مدل‌ها

    • دسترسی به لیست مدل‌ها
    • دریافت اطلاعات مدل‌های خاص
    • حذف مدل‌های سفارشی
  • دستیارها و ابزارها

    • ایجاد دستیارهای هوشمند
    • استفاده از ابزارهای مختلف
      • Function Tool برای توابع سفارشی
      • Retrieval Tool برای جستجو در اسناد
      • Code Interpreter برای اجرای کد

نویسنده

  • نام: Kiyarash Sanjarani Vahed
  • شرکت: ARYMU LLC
  • ایمیل: kiyarash.sanjarani@gmail.com
  • تلفن: +989120414977
  • تلگرام: @ksv20

نصب

composer require sanjarani/openai-php

تنظیمات

در Laravel

پکیج به صورت خودکار در Laravel ثبت می‌شود. تنظیمات خود را در فایل .env انجام دهید:

OPENAI_API_KEY=your-api-key-here
OPENAI_ORGANIZATION_ID=your-organization-id
OPENAI_API_VERSION=v1
OPENAI_BASE_URL=https://api.openai.com
OPENAI_TIMEOUT=30

# تنظیمات مدل‌های پیش‌فرض
OPENAI_CHAT_MODEL=gpt-3.5-turbo
OPENAI_COMPLETION_MODEL=text-davinci-003
OPENAI_EMBEDDING_MODEL=text-embedding-ada-002
OPENAI_IMAGE_MODEL=dall-e-3
OPENAI_FINE_TUNE_MODEL=gpt-3.5-turbo

در پروژه‌های PHP معمولی

use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here',
    'organization_id' => 'your-organization-id',
    'api_version' => 'v1',
    'base_url' => 'https://api.openai.com',
    'timeout' => 30,
    'models' => [
        'chat' => 'gpt-3.5-turbo',
        'completion' => 'text-davinci-003',
        'embedding' => 'text-embedding-ada-002',
        'image' => 'dall-e-3',
        'fine_tune' => 'gpt-3.5-turbo'
    ]
]);

مثال‌های استفاده

Chat Endpoint

// PHP ساده
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// استفاده از مدل پیش‌فرض
$response = $openai->chat()->create([
    'messages' => [
        ['role' => 'system', 'content' => 'شما یک دستیار مفید هستید.'],
        ['role' => 'user', 'content' => 'پایتخت فرانسه کجاست؟']
    ],
    'max_tokens' => 100
]);

// استفاده از مدل خاص و temperature
$response = $openai->chat()->create([
    'model' => 'gpt-4',
    'messages' => [
        ['role' => 'user', 'content' => 'یک داستان برایم تعریف کن']
    ],
    'temperature' => 0.9
]);

// مثال streaming
foreach ($openai->chat()->createStream([
    'messages' => [
        ['role' => 'user', 'content' => 'یک داستان برایم تعریف کن']
    ]
]) as $chunk) {
    echo $chunk['choices'][0]['delta']['content'] ?? '';
}

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// استفاده از مدل پیش‌فرض
$response = OpenAI::chat()->create([
    'messages' => [
        ['role' => 'system', 'content' => 'شما یک دستیار مفید هستید.'],
        ['role' => 'user', 'content' => 'پایتخت فرانسه کجاست؟']
    ],
    'max_tokens' => 100
]);

// استفاده از مدل خاص و temperature
$response = OpenAI::chat()->create([
    'model' => 'gpt-4',
    'messages' => [
        ['role' => 'user', 'content' => 'یک داستان برایم تعریف کن']
    ],
    'temperature' => 0.9
]);

// مثال streaming
foreach (OpenAI::chat()->createStream([
    'messages' => [
        ['role' => 'user', 'content' => 'یک داستان برایم تعریف کن']
    ]
]) as $chunk) {
    echo $chunk['choices'][0]['delta']['content'] ?? '';
}

Completion Endpoint

// PHP ساده
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// تکمیل متن ساده
$response = $openai->completion()->create([
    'prompt' => 'یک داستان کوتاه درباره رباتی که نقاشی یاد می‌گیرد بنویس.',
    'max_tokens' => 200,
    'temperature' => 0.7
]);

// مثال streaming
foreach ($openai->completion()->createStream([
    'prompt' => 'یک شعر درباره بهار بنویس.'
]) as $chunk) {
    echo $chunk['choices'][0]['text'] ?? '';
}

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// تکمیل متن ساده
$response = OpenAI::completion()->create([
    'prompt' => 'یک داستان کوتاه درباره رباتی که نقاشی یاد می‌گیرد بنویس.',
    'max_tokens' => 200,
    'temperature' => 0.7
]);

// مثال streaming
foreach (OpenAI::completion()->createStream([
    'prompt' => 'یک شعر درباره بهار بنویس.'
]) as $chunk) {
    echo $chunk['choices'][0]['text'] ?? '';
}

Embedding Endpoint

// PHP ساده
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

$response = $openai->embedding()->create([
    'input' => 'روباه قهوه‌ای سریع از روی سگ تنبل می‌پرد.'
]);

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

$response = OpenAI::embedding()->create([
    'input' => 'روباه قهوه‌ای سریع از روی سگ تنبل می‌پرد.'
]);

Image Endpoint

// PHP ساده
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// تولید تصویر
$response = $openai->image()->create([
    'prompt' => 'یک غروب زیبا روی کوه‌ها، به سبک هنر دیجیتال',
    'n' => 1,
    'size' => '1024x1024'
]);

// ایجاد تغییرات در تصویر
$response = $openai->image()->createVariation([
    'image' => 'path/to/image.png',
    'n' => 1,
    'size' => '1024x1024'
]);

// ویرایش تصویر
$response = $openai->image()->edit([
    'image' => 'path/to/image.png',
    'mask' => 'path/to/mask.png',
    'prompt' => 'یک رنگین کمان به آسمان اضافه کن',
    'n' => 1,
    'size' => '1024x1024'
]);

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// تولید تصویر
$response = OpenAI::image()->create([
    'prompt' => 'یک غروب زیبا روی کوه‌ها، به سبک هنر دیجیتال',
    'n' => 1,
    'size' => '1024x1024'
]);

// ایجاد تغییرات در تصویر
$response = OpenAI::image()->createVariation([
    'image' => 'path/to/image.png',
    'n' => 1,
    'size' => '1024x1024'
]);

// ویرایش تصویر
$response = OpenAI::image()->edit([
    'image' => 'path/to/image.png',
    'mask' => 'path/to/mask.png',
    'prompt' => 'یک رنگین کمان به آسمان اضافه کن',
    'n' => 1,
    'size' => '1024x1024'
]);

Moderation Endpoint

// PHP ساده
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

$response = $openai->moderation()->create([
    'input' => 'این یک پیام تست است که ممکن است شامل محتوای نامناسب باشد.'
]);

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

$response = OpenAI::moderation()->create([
    'input' => 'این یک پیام تست است که ممکن است شامل محتوای نامناسب باشد.'
]);

FineTune Endpoint

// PHP ساده
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// ایجاد یک کار fine-tuning
$response = $openai->fineTune()->create([
    'training_file' => 'file-abc123',
    'model' => 'gpt-3.5-turbo'
]);

// لیست کارهای fine-tuning
$response = $openai->fineTune()->list();

// دریافت اطلاعات یک کار fine-tuning
$response = $openai->fineTune()->retrieve('ft-abc123');

// لغو یک کار fine-tuning
$response = $openai->fineTune()->cancel('ft-abc123');

// لیست رویدادهای fine-tuning
$response = $openai->fineTune()->listEvents('ft-abc123');

// حذف یک مدل fine-tuned
$response = $openai->fineTune()->delete('ft-abc123');

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// ایجاد یک کار fine-tuning
$response = OpenAI::fineTune()->create([
    'training_file' => 'file-abc123',
    'model' => 'gpt-3.5-turbo'
]);

// لیست کارهای fine-tuning
$response = OpenAI::fineTune()->list();

// دریافت اطلاعات یک کار fine-tuning
$response = OpenAI::fineTune()->retrieve('ft-abc123');

// لغو یک کار fine-tuning
$response = OpenAI::fineTune()->cancel('ft-abc123');

// لیست رویدادهای fine-tuning
$response = OpenAI::fineTune()->listEvents('ft-abc123');

// حذف یک مدل fine-tuned
$response = OpenAI::fineTune()->delete('ft-abc123');

Model Endpoint

// PHP ساده
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// لیست تمام مدل‌ها
$response = $openai->model()->list();

// دریافت اطلاعات یک مدل
$response = $openai->model()->retrieve('gpt-3.5-turbo');

// حذف یک مدل
$response = $openai->model()->delete('ft-abc123');

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// لیست تمام مدل‌ها
$response = OpenAI::model()->list();

// دریافت اطلاعات یک مدل
$response = OpenAI::model()->retrieve('gpt-3.5-turbo');

// حذف یک مدل
$response = OpenAI::model()->delete('ft-abc123');

Assistants & Tools

// PHP ساده
use Sanjarani\OpenAI\OpenAI;
use Sanjarani\OpenAI\Tools\FunctionTool;
use Sanjarani\OpenAI\Tools\RetrievalTool;
use Sanjarani\OpenAI\Tools\CodeInterpreterTool;

$openai = new OpenAI(['api_key' => 'your-api-key']);

// ایجاد ابزارها
$weatherTool = FunctionTool::create(
    'get_weather',
    'دریافت آب و هوای فعلی در یک مکان',
    [
        'location' => [
            'type' => 'string',
            'description' => 'شهر و استان، مثال: تهران، ایران',
            'required' => true
        ],
        'unit' => [
            'type' => 'string',
            'enum' => ['celsius', 'fahrenheit'],
            'description' => 'واحد دما',
            'required' => false
        ]
    ]
);

// ابزار جستجو در اسناد
$retrievalTool = RetrievalTool::create();

// ابزار اجرای کد
$codeInterpreterTool = CodeInterpreterTool::create();

// ایجاد یک دستیار با چندین ابزار
$assistant = $openai->assistants()->create([
    'name' => 'دستیار چند منظوره',
    'instructions' => 'شما یک دستیار چند منظوره هستید که می‌توانید در زمینه اطلاعات آب و هوا، جستجوی اسناد و اجرای کد کمک کنید.',
    'model' => 'gpt-4-turbo-preview',
    'tools' => [$weatherTool, $retrievalTool, $codeInterpreterTool]
]);

// لیست تمام دستیارها
$assistants = $openai->assistants()->list();

// دریافت یک دستیار خاص
$assistant = $openai->assistants()->retrieve('asst_abc123');

// به‌روزرسانی یک دستیار
$updatedAssistant = $openai->assistants()->update('asst_abc123', [
    'name' => 'دستیار به‌روز شده'
], [$weatherTool, $retrievalTool]);

// حذف یک دستیار
$openai->assistants()->delete('asst_abc123');

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;
use Sanjarani\OpenAI\Tools\FunctionTool;
use Sanjarani\OpenAI\Tools\RetrievalTool;
use Sanjarani\OpenAI\Tools\CodeInterpreterTool;

// ایجاد ابزارها
$weatherTool = FunctionTool::create(
    'get_weather',
    'دریافت آب و هوای فعلی در یک مکان',
    [
        'location' => [
            'type' => 'string',
            'description' => 'شهر و استان',
            'required' => true
        ]
    ]
);

$retrievalTool = RetrievalTool::create();
$codeInterpreterTool = CodeInterpreterTool::create();

// ایجاد یک دستیار با ابزارها
$assistant = OpenAI::assistants()->create([
    'name' => 'دستیار چند منظوره',
    'instructions' => 'شما در زمینه‌های مختلف کمک می‌کنید',
    'model' => 'gpt-4-turbo-preview',
    'tools' => [$weatherTool, $retrievalTool, $codeInterpreterTool]
]);

// لیست تمام دستیارها
$assistants = OpenAI::assistants()->list();

// دریافت یک دستیار خاص
$assistant = OpenAI::assistants()->retrieve('asst_abc123');

// به‌روزرسانی یک دستیار
$updatedAssistant = OpenAI::assistants()->update('asst_abc123', [
    'name' => 'دستیار به‌روز شده'
], [$weatherTool, $retrievalTool]);

// حذف یک دستیار
OpenAI::assistants()->delete('asst_abc123');

ابزارهای موجود

  1. Function Tool: تعریف توابع سفارشی که دستیار می‌تواند از آنها استفاده کند
$functionTool = FunctionTool::create(
    'نام_تابع',
    'توضیحات تابع',
    [
        'نام_پارامتر' => [
            'type' => 'string|number|boolean|array|object',
            'description' => 'توضیحات پارامتر',
            'required' => true|false
        ]
    ]
);
  1. Retrieval Tool: امکان جستجو و بازیابی اطلاعات از فایل‌های آپلود شده
$retrievalTool = RetrievalTool::create();
  1. Code Interpreter Tool: امکان نوشتن، اجرا و اشکال‌زدایی کد
$codeInterpreterTool = CodeInterpreterTool::create();

ویژگی‌ها

Chat Endpoint

  • ایجاد چت
  • پشتیبانی از streaming

Completion Endpoint

  • تکمیل متن
  • پشتیبانی از streaming

Embedding Endpoint

  • تبدیل متن به بردار

Image Endpoint

  • تولید تصویر
  • ایجاد تغییرات در تصویر
  • ویرایش تصویر

Moderation Endpoint

  • بررسی محتوای نامناسب

FineTune Endpoint

  • ایجاد مدل سفارشی
  • لیست مدل‌های سفارشی
  • دریافت اطلاعات مدل
  • لغو آموزش
  • لیست رویدادها
  • حذف مدل

Model Endpoint

  • لیست مدل‌ها
  • دریافت اطلاعات مدل
  • حذف مدل

Assistants & Tools

  • ایجاد دستیارها
  • به‌روزرسانی دستیارها
  • حذف دستیارها

General Features

  • پشتیبانی کامل از API OpenAI
  • سازگار با Laravel
  • تست‌های واحد
  • مستندات کامل
  • پشتیبانی از PSR-4
  • مدیریت خطاها
  • پشتیبانی از streaming (در مواردی که API OpenAI از آن پشتیبانی می‌کند)

API Version Support

  • پشتیبانی از نسخه‌های v1 و v2
  • آدرس پایه قابل تنظیم
  • پشتیبانی از شناسه سازمان
  • زمان‌سنج قابل تنظیم

Error Handling

  • مدیریت جامع خطاها
  • مدیریت خطاهای HTTP
  • پاسخ‌های خطای API
  • مدیریت زمان‌سنج شبکه

Security

  • مدیریت امن کلید API
  • کنترل دسترسی در سطح سازمان
  • ارتباط فقط از طریق HTTPS
  • اعتبارسنجی ورودی

Performance

  • استخر اتصال
  • تنظیم زمان‌سنج درخواست
  • پشتیبانی از streaming پاسخ
  • مصرف کارآمد حافظه

تست

composer test

Support

For support and contact with the author, you can use the following methods:

License

MIT

Company

This package is developed by ARYMU LLC.

OpenAI PHP SDK

A PHP SDK for the OpenAI API with support for all endpoints and features.

Installation

composer require sanjarani/openai-php

Configuration

Add your OpenAI API key to your .env file:

OPENAI_API_KEY=your-api-key-here
OPENAI_ORGANIZATION=your-organization-id-here  # Optional

Usage

Assistants & Tools

use Sanjarani\OpenAI\OpenAI;
use Sanjarani\OpenAI\Tools\FunctionTool;
use Sanjarani\OpenAI\Tools\RetrievalTool;
use Sanjarani\OpenAI\Tools\CodeInterpreterTool;

$openai = new OpenAI(['api_key' => 'your-api-key']);

// Create tools
$weatherTool = FunctionTool::create(
    'get_weather',
    'Get the current weather in a location',
    [
        'location' => [
            'type' => 'string',
            'description' => 'The city and state, e.g. San Francisco, CA',
            'required' => true
        ],
        'unit' => [
            'type' => 'string',
            'enum' => ['celsius', 'fahrenheit'],
            'description' => 'The unit for the temperature',
            'required' => false
        ]
    ]
);

// Retrieval tool for searching through documents
$retrievalTool = RetrievalTool::create();

// Code interpreter tool for executing code
$codeInterpreterTool = CodeInterpreterTool::create();

// Create an assistant with multiple tools
$assistant = $openai->assistants()->create([
    'name' => 'Multi-Tool Assistant',
    'instructions' => 'You are a versatile assistant that can help with weather information, document search, and code execution.',
    'model' => 'gpt-4-turbo-preview',
    'tools' => [$weatherTool, $retrievalTool, $codeInterpreterTool]
]);

// List all assistants
$assistants = $openai->assistants()->list();

// Retrieve a specific assistant
$assistant = $openai->assistants()->retrieve('asst_abc123');

// Update an assistant
$updatedAssistant = $openai->assistants()->update('asst_abc123', [
    'name' => 'Updated Assistant'
], [$weatherTool, $retrievalTool]);

// Delete an assistant
$openai->assistants()->delete('asst_abc123');

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;
use Sanjarani\OpenAI\Tools\FunctionTool;
use Sanjarani\OpenAI\Tools\RetrievalTool;
use Sanjarani\OpenAI\Tools\CodeInterpreterTool;

// Create tools
$weatherTool = FunctionTool::create(
    'get_weather',
    'Get the current weather in a location',
    [
        'location' => [
            'type' => 'string',
            'description' => 'The city and state',
            'required' => true
        ]
    ]
);

$retrievalTool = RetrievalTool::create();
$codeInterpreterTool = CodeInterpreterTool::create();

// Create an assistant with tools
$assistant = OpenAI::assistants()->create([
    'name' => 'Multi-Tool Assistant',
    'instructions' => 'You help with various tasks',
    'model' => 'gpt-4-turbo-preview',
    'tools' => [$weatherTool, $retrievalTool, $codeInterpreterTool]
]);

// List all assistants
$assistants = OpenAI::assistants()->list();

// Retrieve a specific assistant
$assistant = OpenAI::assistants()->retrieve('asst_abc123');

// Update an assistant
$updatedAssistant = OpenAI::assistants()->update('asst_abc123', [
    'name' => 'Updated Assistant'
], [$weatherTool, $retrievalTool]);

// Delete an assistant
OpenAI::assistants()->delete('asst_abc123');

Available Tools

  1. Function Tool: Define custom functions that the assistant can use
$functionTool = FunctionTool::create(
    'function_name',
    'function description',
    [
        'parameter_name' => [
            'type' => 'string|number|boolean|array|object',
            'description' => 'Parameter description',
            'required' => true|false
        ]
    ]
);
  1. Retrieval Tool: Enable the assistant to search and retrieve information from uploaded files
$retrievalTool = RetrievalTool::create();
  1. Code Interpreter Tool: Allow the assistant to write, execute, and debug code
$codeInterpreterTool = CodeInterpreterTool::create();

Responses API

// PHP ساده
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// ایجاد یک پاسخ
$response = $openai->responses()->create('thread_abc123', 'run_xyz789', [
    'content' => 'این یک پاسخ تست است.',
    'role' => 'assistant',
    'metadata' => [
        'key' => 'value'
    ]
]);

// دریافت لیست پاسخ‌ها
$responses = $openai->responses()->list('thread_abc123', 'run_xyz789', [
    'limit' => 10,
    'order' => 'desc'
]);

// دریافت یک پاسخ خاص
$response = $openai->responses()->retrieve('thread_abc123', 'run_xyz789', 'resp_abc123');

// به‌روزرسانی یک پاسخ
$updatedResponse = $openai->responses()->update('thread_abc123', 'run_xyz789', 'resp_abc123', [
    'content' => 'این پاسخ به‌روز شده است.'
]);

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// ایجاد پاسخ
$response = OpenAI::responses()->create('thread_abc123', 'run_xyz789', [
    'content' => 'این یک پاسخ تست است.',
    'role' => 'assistant'
]);

// دریافت لیست پاسخ‌ها
$responses = OpenAI::responses()->list('thread_abc123', 'run_xyz789');

// دریافت یک پاسخ خاص
$response = OpenAI::responses()->retrieve('thread_abc123', 'run_xyz789', 'resp_abc123');

// به‌روزرسانی پاسخ
$updatedResponse = OpenAI::responses()->update('thread_abc123', 'run_xyz789', 'resp_abc123', [
    'content' => 'این پاسخ به‌روز شده است.'
]);

Web Search

// PHP ساده
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// جستجوی ساده در وب
$results = $openai->webSearch()->search([
    'query' => 'آخرین اخبار هوش مصنوعی',
    'limit' => 10
]);

// جستجو با فیلتر
$filteredResults = $openai->webSearch()->getResults('هوش مصنوعی', [
    'language' => 'fa',
    'date_range' => 'last_week',
    'site' => 'wikipedia.org'
]);

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// جستجوی ساده
$results = OpenAI::webSearch()->search([
    'query' => 'آخرین اخبار هوش مصنوعی'
]);

// جستجو با فیلتر
$filteredResults = OpenAI::webSearch()->getResults('هوش مصنوعی', [
    'language' => 'fa'
]);

File Search

// PHP ساده
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// جستجوی ساده فایل
$results = $openai->fileSearch()->search('config.php', [
    'directory' => '/src',
    'extensions' => ['php', 'json']
]);

// جستجوی پیشرفته
$advancedResults = $openai->fileSearch()->advancedSearch([
    'pattern' => '*.php',
    'content' => 'OpenAI',
    'modified_after' => '2024-01-01'
]);

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// جستجوی ساده
$results = OpenAI::fileSearch()->search('config.php');

// جستجوی پیشرفته
$advancedResults = OpenAI::fileSearch()->advancedSearch([
    'pattern' => '*.php'
]);

Agents SDK

// PHP ساده
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// ایجاد یک عامل جدید
$agent = $openai->agents()->create([
    'name' => 'دستیار برنامه‌نویسی',
    'description' => 'یک عامل هوشمند برای کمک به برنامه‌نویسی',
    'capabilities' => [
        'code_completion',
        'code_review',
        'debugging'
    ],
    'model' => 'gpt-4-turbo-preview'
]);

// دریافت لیست عامل‌ها
$agents = $openai->agents()->list();

// به‌روزرسانی یک عامل
$updatedAgent = $openai->agents()->update('agent_abc123', [
    'name' => 'دستیار برنامه‌نویسی پیشرفته'
]);

// اجرای یک عامل
$result = $openai->agents()->run('agent_abc123', [
    'task' => 'بررسی کد'
]);

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// ایجاد عامل
$agent = OpenAI::agents()->create([
    'name' => 'دستیار برنامه‌نویسی'
]);

// لیست عامل‌ها
$agents = OpenAI::agents()->list();

// به‌روزرسانی عامل
$updatedAgent = OpenAI::agents()->update('agent_abc123', [
    'name' => 'دستیار به‌روز شده'
]);

// اجرای عامل
$result = OpenAI::agents()->run('agent_abc123', [
    'task' => 'بررسی کد'
]);

Feedback API

// PHP ساده
use Sanjarani\OpenAI\OpenAI;

$openai = new OpenAI([
    'api_key' => 'your-api-key-here'
]);

// ارسال بازخورد برای یک پاسخ
$feedback = $openai->feedback()->create('thread_abc123', 'run_xyz789', 'resp_abc123', [
    'rating' => 5,
    'comment' => 'پاسخ بسیار مفید بود',
    'categories' => [
        'accuracy' => 5,
        'helpfulness' => 5,
        'clarity' => 4
    ]
]);

// دریافت لیست بازخوردها
$feedbacks = $openai->feedback()->list('thread_abc123', 'run_xyz789', 'resp_abc123');

// دریافت یک بازخورد خاص
$feedback = $openai->feedback()->retrieve('thread_abc123', 'run_xyz789', 'resp_abc123', 'feedback_abc123');

// به‌روزرسانی بازخورد
$updatedFeedback = $openai->feedback()->update(
    'thread_abc123',
    'run_xyz789',
    'resp_abc123',
    'feedback_abc123',
    [
        'rating' => 4,
        'comment' => 'پاسخ خوب بود اما می‌توانست بهتر باشد'
    ]
);

// حذف بازخورد
$result = $openai->feedback()->delete('thread_abc123', 'run_xyz789', 'resp_abc123', 'feedback_abc123');

// Laravel
use Sanjarani\OpenAI\Facades\OpenAI;

// ارسال بازخورد
$feedback = OpenAI::feedback()->create('thread_abc123', 'run_xyz789', 'resp_abc123', [
    'rating' => 5,
    'comment' => 'پاسخ بسیار مفید بود'
]);

// دریافت لیست بازخوردها
$feedbacks = OpenAI::feedback()->list('thread_abc123', 'run_xyz789', 'resp_abc123');

// دریافت یک بازخورد خاص
$feedback = OpenAI::feedback()->retrieve('thread_abc123', 'run_xyz789', 'resp_abc123', 'feedback_abc123');

// به‌روزرسانی بازخورد
$updatedFeedback = OpenAI::feedback()->update(
    'thread_abc123',
    'run_xyz789',
    'resp_abc123',
    'feedback_abc123',
    [
        'rating' => 4,
        'comment' => 'پاسخ خوب بود اما می‌توانست بهتر باشد'
    ]
);

// حذف بازخورد
$result = OpenAI::feedback()->delete('thread_abc123', 'run_xyz789', 'resp_abc123', 'feedback_abc123');

[... rest of the documentation ...]