بعد OpenAI، نموذج إثبات المفهوم (POC) مع Mistral AI المنافس الفرنسي!

مقدمة

يستعرض هذا المقال سكريبت بايثون تم تطويره كدليل إثبات مفهوم (POC) للتفاعل مع Mistral AI، وهو بديل فرنسي لـ OpenAI. يعيد استخدام مبدأ السكريبت الذي تم تطويره سابقًا للتفاعل مع OpenAI.

التعاون مع GPT-4 لتطوير السكريبت

كان هذا المشروع “تعاونًا” مع ChatGPT-4، آخر نسخة من الذكاء الاصطناعي الحوارية لـ OpenAI. معًا، قمنا بتصميم سكريبت بايثون، مستفيدين من قدرة GPT-4 على فهم وتوليد الكود. هذا التآزر بين الخبرة البشرية والذكاء الاصطناعي يفتح الطريق لأساليب جديدة في التطوير والابتكار.

أهداف السكريبت

كان الهدف الرئيسي هو التجربة مع API Mistral AI باستخدام بايثون لتطوير مهاراتي في هذا المجال.

  • اختبار Mistral AI: استكشاف ميزات Mistral AI وفهم كيفية استخدامها بشكل فعال.
  • الأتمتة باستخدام بايثون: عرض كيفية استخدام بايثون لأتمتة التفاعلات مع APIs الذكاء الاصطناعي.
  • إثراء الاستفسارات: التجربة مع إثراء الاستفسارات من خلال دمج محتوى ويب مستخرج عبر Selenium.

إمكانيات السكريبت

يفتح هذا السكريبت الطريق لتطبيقات متنوعة، منها:

  • توليد محتوى غني: إثراء الاستفسارات ديناميكيًا بمعلومات ذات صلة مستخرجة من الويب.
  • مساعد افتراضي شخصي: استخدام الذكاء الاصطناعي لإنشاء ردود مخصصة بناءً على محتوى الويب.
  • تحسين أدوات الأتمتة: دمج الذكاء الاصطناعي في الأدوات الحالية لتحقيق أداء أفضل.

آلية عمل السكريبت

يستخدم السكريبت mistral-ai.py النموذج mistral-small لتوليد الردود. وإليك كيفية عمله:

  1. استرجاع محتوى الويب: استخدام Selenium لاستخراج المحتوى من الروابط المحددة في الاستفسار.
  2. توليد الردود: إرسال الاستفسار الغني بالمعلومات إلى Mistral AI للحصول على رد.

ملاحظات هامة

  • هذا السكريبت هو نموذج إثبات المفهوم (POC): موجه لأغراض تعليمية وتجريبية فقط، وليس للاستخدام في بيئة الإنتاج.
  • دائمًا احترام قواعد استخدام API والمواقع الإلكترونية: عند استخدام API MistralAI واستخلاص المعلومات من المواقع، تأكد من احترام شروط الاستخدام وسياسات الخصوصية.

كود السكريبت mistral-ai.py

#!/usr/bin/env python3
import re
import sys
import os 
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from mistralai.client import MistralClient
from mistralai.models.chat_completion import ChatMessage


def get_web_content(url):
    if not url:
        return ""

    # Configure Chrome options
    chrome_options = Options()

    # Create a new browser instance with the configured options
    driver = webdriver.Chrome(options=chrome_options)

    # Make a request to the web page
    driver.get(url)

    # Retrieve the JavaScript content of the page
    web_content = driver.execute_script("return document.documentElement.innerText")

    # Don't forget to close the browser when you're done
    driver.quit()

    return web_content

def get_response(question, client):
    urls = re.findall(r'(https?://\S+)', question)
    if urls:  # Vérifiez si une URL a été fournie
        for url in urls:
            web_content = get_web_content(url)
            if web_content:
                # Remplacez l'URL par le contenu du web dans le prompt
                question = question.replace(url, web_content)

    messages = [ChatMessage(role="user", content=question)]
    response = client.chat(model=model, messages=messages, safe_mode=False)

    for choice in response.choices:
        print(f"{choice.message.content}")


# Récupération de la question depuis l'argument de la ligne de commande
question = sys.argv[1] if len(sys.argv) > 1 else "Quelle est votre question ?"

api_key = os.getenv("MISTRAL_API_KEY", "YOUR_MISTRAL_API_KEY")
model = "mistral-small"

try:
    client = MistralClient(api_key=api_key)
    get_response(question, client)
except Exception as e:
    print(f"Une erreur est survenue : {e}")

try:
    del client
except TypeError:
    pass

شرح مفصل للسكريبت

استيراد الوحدات

  • os, sys: تستخدم للتفاعل مع نظام التشغيل.
  • argparse: يتيح التعامل مع معاملات سطر الأوامر.
  • re: وحدة لمعالجة التعابير النمطية.
  • webdriver: يتيح استخدام Selenium لأتمتة العمليات في متصفح الويب.

دالة get_web_content

  • تستخدم هذه الدالة Selenium للتنقل إلى عنوان URL واسترجاع محتواه.
  • هي أساسية لإثراء الاستفسارات بمعلومات مستخرجة من الإنترنت.

دالة get_response

  • تعالج الروابط الموجودة في الاستفسار.
  • تسترجع محتواها عبر get_web_content.
  • ترسل الاستفسار الغني بالمعلومات إلى Mistral AI للحصول على رد.

الكتلة main

  • نقطة الدخول للسكريبت.
  • يتعامل مع معاملات سطر الأوامر.
  • يهيئ عميل Mistral AI ويعالج الرد.

استخدام Mistral AI

  • يتفاعل السكريبت مع النموذج mistral-small.
  • يرسل الاستفسار، المؤثر بمحتوى الويب، إلى Mistral AI للحصول على رد ذي صلة. توفر هذه النظرة العامة على البرنامج نصي فكرة عن كيفية عمله و هيكله، مما يسمح بفهم كيف يستخدم Python و Selenium و Mistral AI لأتمتة وإثراء التفاعلات مع الذكاء الاصطناعي.

أمثلة الاستخدام

# Optionnel - Vous aurez peut être besoin d'installer les dépendances : 
pip install selenium
pip install mistralai

# Définir la clé API Mistral AI
export MISTRAL_API_KEY="votre_clé_api"

# on rend le script executable
chmod 700 mistral-ai.py

./mistral-ai.py "Résume en français ce contenu : https://platform.openai.com/docs/guides/prompt-engineering"

Ce guide partage des stratégies et tactiques pour obtenir de meilleurs résultats des grands modèles linguistiques (parfois appelés modèles GPT, tels que GPT-4). Les méthodes décrites peuvent être déployées en combinaison pour un effet plus important. L'expérimentation est encouragée pour trouver les méthodes qui fonctionnent le mieux pour vous.

Certains des exemples présentés fonctionnent actuellement uniquement avec le modèle le plus capable, gpt-4. En général, si vous constatez qu'un modèle échoue à une tâche et qu'un modèle plus capable est disponible, il vaut souvent la peine d'essayer à nouveau avec le modèle plus capable.

Des exemples de invites sont également fournis pour montrer ce que les modèles sont capables de faire.

Voici les six stratégies présentées dans le guide :

1. Rédiger des instructions claires
2. Fournir des détails dans votre requête pour obtenir des réponses plus pertinentes
3. Demander au modèle d'adopter une personnalité
4. Utiliser des délimiteurs pour indiquer distinctement les parties de l'entrée
5. Spécifier les étapes requises pour terminer une tâche
6. Fournir des exemples et spécifier la longueur de la sortie

Le guide décrit également des tactiques pour améliorer les performances des modèles, telles que la décomposition de tâches complexes en tâches plus simples, l'utilisation de références textuelles pour aider les modèles à fournir des réponses moins fabriquées, et l'utilisation de l\'exécution de code pour effectuer des calculs plus précis ou appeler des API externes.

Enfin, le guide présente des stratégies pour tester systématiquement les changements apportés aux systèmes en évaluant les sorties des modèles par rapport aux réponses standardisées.


# Sans url dans le prompt :
./mistral-ai.py "que sais tu faire ?"

Je suis capable de comprendre et de générer du langage naturel, ce qui me permet de répondre à une grande variété de questions, 
de traduire du texte d'une langue à une autre, de résumer du texte, de répondre à des demandes de manière polie, et bien plus encore. 
Je peux également effectuer des tâches telles que la recherche de informations sur le web, la programmation, la création de contenu 
et l'automatisation de tâches. 
Cependant, il est important de noter que mes compétences et connaissances sont limitées à ce qui m'a été appris et je suis dépendant 
de la qualité de l'information avec laquelle je suis entrainé.

تمت ترجمة هذا المستند من النسخة fr إلى اللغة ar باستخدام النموذج gpt-4o. لمزيد من المعلومات حول عملية الترجمة، راجع https://gitlab.com/jls42/ai-powered-markdown-translator