مبتدئ
⏱ ٤٥ دقيقة قراءة
© بوابة الذكاء الاصطناعي ٢٠٢٦-٠٥-١٥
تعلم كيفية بناء روبوت محادثة بالذكاء الاصطناعي باستخدام Mistral Codestral API لتوليد وتنفيذ الأكواد لتعديل الرسوم البيانية في Matplotlib بكفاءة.
المتطلبات الأساسية
- Python ٣.١٠ أو أعلى
- مفتاح API لـ Mistral
- فهم أساسي لـ Python وAsyncio
ما الذي نبنيه
في هذا الدرس، سنقوم ببناء روبوت محادثة بالذكاء الاصطناعي قادر على توليد وتنفيذ أكواد Python لتعديل الرسوم البيانية في Matplotlib. سيتم بناء الروبوت باستخدام Mistral API، مستفيدين من النماذج المتخصصة في توليد الأكواد. بنهاية هذا المشروع، سيكون الروبوت قادرًا على فهم الطلبات بلغة طبيعية، وتوليد الأكواد المناسبة بلغة Python، وتنفيذها لإجراء التعديلات المطلوبة على الرسوم البيانية في الوقت الحقيقي.
هذا المشروع مثالي للمطورين الذين يرغبون في الحصول على تجربة عملية في تنفيذ الأكواد المدفوعة بالذكاء الاصطناعي وتطبيقات الويب التفاعلية باستخدام Python. سيستخدم الروبوت Codestral، وهو نموذج مُحسَّن خصيصًا لتوليد الأكواد، مما يضمن دقة أعلى في مهام تصور البيانات.
الإعداد والتثبيت
لبدء العمل، نحتاج إلى تثبيت أحدث الإصدارات من حزم Python الضرورية. سنستخدم `panel` للواجهة وعميل `mistralai` الموحد للتواصل مع API.
pip install panel mistralai python-dotenvبعد ذلك، قم بتكوين متغيرات البيئة الخاصة بك في ملف `.env` لإدارة بيانات اعتماد API بأمان.
# .env file
MISTRAL_API_KEY="your_api_key_here"الخطوة ١: تهيئة بيئة المشروع
أولاً، نقوم بإعداد البيئة ونتأكد من تهيئة امتداد Panel. نستخدم عميل Mistral الموحد، الذي يدعم العمليات المتزامنة وغير المتزامنة بشكل طبيعي.
import os
import panel as pn
from mistralai import Mistral
from dotenv import load_dotenv
load_dotenv()
pn.extension("codeeditor", sizing_mode="stretch_width")
# Initialize unified Mistral client
api_key = os.getenv("MISTRAL_API_KEY")
client = Mistral(api_key=api_key)يقوم الكود بتهيئة إطار عمل الواجهة وإعداد عميل API باستخدام المفتاح من بيئتك. يضمن ذلك أن تطبيقك يمكنه التواصل بأمان مع أحدث نماذج توليد الأكواد من Mistral.
الخطوة ٢: تحديد السلوك الافتراضي للروبوت
في هذه الخطوة، نختار النموذج الأمثل لتوليد الأكواد ونقدم تعليمات النظام. لعام ٢٠٢٦، نستخدم نموذج ‘codestral-latest’ الذي يتفوق على النماذج العامة في المهام التقنية.
LLM_MODEL = "codestral-latest"
default_prompt = """You are a data visualization expert.
Your goal is to provide Python code using matplotlib based on user requests.
Provide ONLY the code inside triple backticks (```python).
Ensure the final plot object is named `fig` and is the last line of the script."""باستخدام Codestral، نقلل من خطر حدوث أخطاء في بناء الجملة في الأكواد المولدة. يضمن التوجيه أن يكون الإخراج منسقًا بشكل صحيح لالتقاط كائن الشكل بواسطة محرك التنفيذ لدينا.
الخطوة ٣: تنفيذ وظيفة الروبوت
الآن، نقوم بتنفيذ المنطق لمعالجة المدخلات وتحديث الرسم البياني. لاحظ استخدام `async` لمنع تجميد الواجهة أثناء استدعاءات API، و`pn.bind` لتجربة تفاعلية.
from panel.io.mime_render import exec_with_return
async def get_plot(prompt):
if not prompt:
return "Please enter a request."
# Request code from Mistral
messages = [{"role": "system", "content": default_prompt},
{"role": "user", "content": prompt}]
response = await client.chat.complete_async(model=LLM_MODEL, messages=messages)
raw_code = response.choices[0].message.content
# Extract code and execute
code = raw_code.replace("```python", "").replace("```", "").strip()
try:
return exec_with_return(code)
except Exception as e:
return f"Error executing code: {e}"
# Panel UI setup using reactive binding
input_box = pn.widgets.TextInput(name='Update Plot (e.g., "Make it a red line chart")')
interactive_plot = pn.bind(get_plot, input_box)
layout = pn.Column(input_box, pn.pane.Plotly(interactive_plot))
layout.servable()تتعامل وظيفة `get_plot` مع كامل خط الأنابيب: إرسال الطلب، تحليل استجابة الماركداون، وتنفيذ الكود بأمان باستخدام أداة تنفيذ Panel. تبقى الواجهة تفاعلية باستخدام العميل غير المتزامن.
اختبار التنفيذ الخاص بك
أدخل أمرًا بلغة طبيعية في مربع الإدخال. سيقوم الروبوت بترجمة كلماتك إلى Python، وتنفيذها، وعرض الشكل الناتج من Matplotlib فورًا.
# Example prompt: "Draw a sine wave and set the color to emerald green."
# Expected output: A high-quality Matplotlib chart appearing in the output pane.ما الذي يمكن بناؤه بعد ذلك
- التحول إلى نموذج **Mistral-Large** للمنطق المعقد متعدد الخطوات.
- إضافة أداة `CodeEditor` للسماح بالتعديلات اليدوية على الكود المولد بواسطة الذكاء الاصطناعي.
- تنفيذ سجل المحادثات (الذاكرة) بحيث يتذكر الذكاء الاصطناعي التغييرات السابقة على الرسوم البيانية.