مكتبة openai-api-rs في Rust: دليل شامل مع أمثلة عملية
مكتبة openai-api-rs هي عميل حديث، غير متزامن (async)، وآمن من حيث الأنواع (type-safe) للتعامل مع OpenAI API، مكتوب بلغة Rust. توفر للمطورين واجهة سهلة للتفاعل مع نماذج GPT (بما في ذلك GPT-4 و GPT-3.5)، و DALL-E (توليد الصور)، و Whisper (التعرف على الصوت)، بالإضافة إلى العمل مع التضمينات (embeddings)، ومراقبة المحتوى، وإدارة الملفات. تدعم المكتبة بالكامل البث المباشر (streaming) للردود، وهو أمر بالغ الأهمية لبناء تطبيقات الدردشة التفاعلية والمساعدين ذوي زمن الاستجابة المنخفض.
لماذا نستخدم Rust مع OpenAI API؟ يوفر Rust أعلى أداء وأمانًا للذاكرة دون الحاجة إلى جامع القمامة (garbage collector). هذا يجعل openai-api-rs الخيار الأمثل لتطبيقات الخادم عالية التحميل، وبوتات Telegram/Discord، وأنظمة معالجة اللغة الطبيعية في الوقت الفعلي، والأجهزة المدمجة. بفضل نظام الأنواع الصارم في Rust، يتم اكتشاف العديد من الأخطاء (مثل تنسيق الطلب الخاطئ) في مرحلة الترجمة (compile time) وليس أثناء التشغيل. المكتبة مبنية على reqwest و tokio، مما يضمن كفاءة عالية في عمليات الإدخال والإخراج غير المتزامنة.
في موقع PythonLib التعليمي، نقدم هذه المكتبة لنوضح كيف يمكن استخدام نظام Rust البيئي في مهام تعلم الآلة ومعالجة اللغة الطبيعية. حتى إذا كنت تكتب بلغة Python، فإن فهم عملاء Rust سيساعدك على استيعاب البنية الداخلية لطلبات API ومبادئ معالجة البيانات المتدفقة. المكتبة مدعومة بنشاط من المجتمع، ولها توثيق مفصل ومغطاة بالاختبارات.
التثبيت
لتثبيت مكتبة openai-api-rs في مشروع Rust الخاص بك، قم بتنفيذ الأمر التالي في الطرفية (terminal) داخل المجلد الرئيسي للمشروع:
cargo add openai-api-rs
سيقوم هذا الأمر بإضافة أحدث إصدار من المكتبة إلى ملف Cargo.toml. إذا كنت تفضل التحرير اليدوي، أضف السطر التالي إلى قسم [dependencies]:
[dependencies]
openai-api-rs = "0.2" # تحقق من أحدث إصدار على crates.io
ستحتاج أيضًا إلى بيئة تشغيل غير متزامنة (async runtime). يُوصى باستخدام tokio:
cargo add tokio --features full
لا تنسَ تعيين متغير البيئة OPENAI_API_KEY بمفتاح API الخاص بك من OpenAI. يمكنك فعل ذلك في الطرفية:
export OPENAI_API_KEY="sk-مفتاحك_هنا"
أو يمكنك تمرير المفتاح مباشرة في الكود (غير موصى به للإنتاج).
بداية سريعة
مثال عملي بسيط: إرسال طلب إلى نموذج GPT-3.5 وعرض الرد في وحدة التحكم.
use openai_api_rs::v1::api::Client;
use openai_api_rs::v1::chat_completion::{ChatCompletionRequest, Message};
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// إنشاء عميل باستخدام مفتاح API من متغير البيئة
let client = Client::new(env::var("OPENAI_API_KEY")?);
// تكوين الطلب
let request = ChatCompletionRequest::new(
"gpt-3.5-turbo".to_string(),
vec![Message {
role: "user".to_string(),
content: "اكتب قصيدة قصيرة عن لغة Rust".to_string(),
}],
);
// إرسال الطلب والحصول على الرد
let response = client.chat_completion(request).await?;
// استخراج نص الرد
if let Some(choice) = response.choices.first() {
println!("الرد: {}", choice.message.content);
}
Ok(())
}
قم بتشغيل البرنامج باستخدام الأمر cargo run. يجب أن ترى قصيدة مولّدة. يوضح هذا المثال الآلية الأساسية: إنشاء العميل، تكوين الطلب، ومعالجة الرد.