Rust والذكاء الاصطناعي: كيفية استخدام ChatGPT في التطوير بلغة Rust

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

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

ابدأ الدورة

لماذا Rust والذكاء الاصطناعي ليسا خيالاً علمياً بل أداة عمل

\n\n

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

\n\n

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

\n\n

إذا كنت ترغب يوماً في إضافة "عقل" لمشروع Rust الخاص بك على شكل نموذج لغوي - فقد وصلت إلى المكان الصحيح. هيا بنا!

\n\n

ما سنحتاجه: الأدوات والتحضير

\n\n

قبل كتابة الكود، دعنا نفهم ما هو مطلوب لدمج ChatGPT في تطبيق Rust.

\n\n

المكونات الضرورية

\n
    \n
  • Rust - مترجم مثبت (rustc) ومدير حزم Cargo. إذا لم يكن لديك Rust بعد - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • \n
  • مفتاح API من OpenAI - سجل في platform.openai.com، أنشئ مفتاحاً وضعه في متغير البيئة OPENAI_API_KEY
  • \n
  • مكتبات Rust - سنستخدم الكريتات reqwest (لطلبات HTTP)، serde و serde_json (للعمل مع JSON)، tokio (بيئة تشغيل غير متزامنة)
  • \n
\n\n

إنشاء المشروع

\n
cargo new rust_chatgpt\ncd rust_chatgpt
\n\n

أضف التبعيات في Cargo.toml:

\n\n
[dependencies]\nreqwest = { version = "0.12", features = ["json"] }\ntokio = { version = "1", features = ["full"] }\nserde = { version = "1.0", features = ["derive"] }\nserde_json = "1.0"
\n\n

الآن يمكنك تشغيل cargo build - سيتم جلب التبعيات تلقائياً.

\n\n

كتابة أول طلب إلى ChatGPT بلغة Rust

\n\n

أسهل طريقة "للتحدث" مع ChatGPT هي إرسال طلب POST إلى نقطة النهاية https://api.openai.com/v1/chat/completions. Rust مع كتابته الصارمة للأنواع مثالي لهذه المهمة: سنصف بوضوح هيكل الطلب والرد، وسيتحقق منا المترجم في كل خطوة.

\n\n

هياكل البيانات لواجهة API

\n

تتوقع واجهة OpenAI API JSON بمخطط معين. سنصفه باستخدام serde:

\n\n
use serde::{Deserialize, Serialize};\n\n#[derive(Serialize)]\nstruct ChatRequest {\n    model: String,\n    messages: Vec<Message>,\n    temperature: f32,\n}\n\n#[derive(Serialize, Deserialize, Clone)]\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\n

لاحظ: Message يُستخدم للإرسال والاستقبال - لذلك أضفنا كلا السمتين Serialize و Deserialize.

\n\n

الطلب غير المتزامن

\n

الآن سنكتب دالة ترسل رسالة وتعيد الرد من ChatGPT:

\n\n
use std::env;\n\nasync fn ask_chatgpt(prompt: &str) -> Result<String, Box<dyn std::error::Error>> {\n    let api_key = env::var("OPENAI_API_KEY")\n        .expect("متغير OPENAI_API_KEY غير مضبوط");\n\n    let client = reqwest::Client::new();\n\n    let request_body = ChatRequest {\n        model: "gpt-4o-mini".to_string(), // نموذج سريع ورخيص\n        messages: vec![\n            Message {\n                role: "system".to_string(),\n                

المدونات

توصيات الكتب