دمج ChatGPT API مع Rust: القوة والسرعة في زجاجة واحدة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

لماذا Rust هو الخيار الأمثل للعمل مع ChatGPT API؟

\n

عندما يتعلق الأمر بإنشاء خدمات ذكاء اصطناعي عالية التحميل، يميل معظم المطورين غريزيًا إلى Python. ولكن ماذا لو أخبرتك أن Rust يمكنه التفوق على Python في السرعة والأمان، مع الحفاظ على كل قوة التفاعل مع ChatGPT API؟ اليوم سنشرح كيفية الجمع بين أناقة الشبكات العصبية وأداء لغة النظام.

\n

تخيل: روبوت الدردشة الخاص بك بلغة Rust يعالج آلاف الطلبات في الثانية، دون أن يتعطل بأخطاء الذاكرة ويستهلك موارد أقل بعشر مرات من نظيره في Python. يبدو وكأنه خيال علمي؟ مرحبًا بك في الواقع. في هذه المقالة، سنبني مساعد ذكاء اصطناعي متكامل سيتواصل مع OpenAI API أسرع مما يمكنك قول "ChatGPT".

\n

بالمناسبة، إذا كنت لا تزال غير معتاد على هذه اللغة، فلا تقلق - سنبدأ من الأساسيات ونغوص تدريجيًا في أعماق البرمجة غير المتزامنة. Rust لا يعض إذا كنت تعرف كيفية التعامل معه.

\n\n

ماذا نحتاج للبدء؟

\n

قبل أن نغوص في الكود، دعنا نجهز الأدوات. ستحتاج إلى:

\n
    \n
  • Rust (مثبت عبر rustup)
  • \n
  • مفتاح API من OpenAI (يمكن الحصول عليه من platform.openai.com)
  • \n
  • فهم أساسي لطلبات HTTP و JSON
  • \n
  • القليل من الصبر وفنجان من القهوة
  • \n
\n

سنكتب كل الكود باستخدام الكريتات الحديثة: reqwest لطلبات HTTP، serde لتسلسل البيانات، و tokio للبرمجة غير المتزامنة. هذه هي الحزمة القياسية للعمل مع Rust API في عام 2024.

\n\n

إنشاء المشروع وإضافة التبعيات

\n

افتح الطرفية وأنشئ مشروعًا جديدًا:

\n
cargo new chatgpt_rust --bin\ncd chatgpt_rust
\n

الآن افتح Cargo.toml وأضف الكريتات اللازمة:

\n
[dependencies]\ntokio = { version = "1", features = ["full"] }\nreqwest = { version = "0.12", features = ["json"] }\nserde = { version = "1", features = ["derive"] }\nserde_json = "1"\ndotenv = "0.15"  # لتخزين مفتاح API في .env
\n

لاحظ features = ["json"] في reqwest - سيقوم هذا تلقائيًا بتفعيل دعم تسلسل JSON. بدون ذلك، كان عليك تحليل الردود يدويًا.

\n\n

إعداد متغيرات البيئة

\n

أنشئ ملف .env في جذر المشروع وأضف مفتاحك فيه:

\n
OPENAI_API_KEY=sk-your-secret-key-here
\n

لا تنس إضافة .env إلى .gitignore - الأمان أولاً! Rust صارم مع الأنواع، لكنه أكثر صرامة مع الأسرار.

\n\n

هيكل البيانات لطلب ChatGPT API

\n

يتوقع OpenAI منا JSON محدد بدقة. دعنا نصفه باستخدام serde - وهذا سيجعل الكود قابلاً للقراءة وآمنًا:

\n
use serde::{Deserialize, Serialize};\n\n#[derive(Serialize)]\nstruct ChatRequest {\n    model: String,\n    messages: Vec<Message>,\n    temperature: f32,\n    max_tokens: u32,\n}\n\n#[derive(Serialize, Deserialize)]\nstruct Message {\n    role: String,\n    content: String,\n}\n\n#[derive(Deserialize)]\nstruct ChatResponse {\n    choices: Vec<Choice>,\n}\n\n#[derive(Deserialize)]\nstruct Choice {\n    message: Message,\n}
\n

لاحظ السمات #[derive] - هذا هو سحر Rust الذي يولد تلقائيًا طرق التسلسل. بدون serde، كان عليك كتابة أطنان من الكود النمطي.

\n\n

كتابة عميل غير متزامن لـ OpenAI

\n

الآن الجزء الأكثر إثارة - إنشاء دالة ستتواصل مع ChatGPT API. سنستخدم reqwest و tokio للطلبات غير المتزامنة:

\n
use std::env;\nuse dotenv::dotenv;\n\n#[tokio::main]\nasync fn main() -> Result<(), Box<dyn std::error::Error>> {\n    dote                

المدونات

توصيات الكتب