Nach OpenAI, Proof of Concept über Mistral AI, den französischen Konkurrenten!

Einführung

Dieser Artikel untersucht ein Python-Skript, das als Proof of Concept (POC) entwickelt wurde, um mit Mistral AI, einer französischen Alternative zu OpenAI, zu interagieren. Es greift das Prinzip des zuvor entwickelten Skripts zur Interaktion mit OpenAI auf.

Zusammenarbeit mit GPT-4 zur Entwicklung des Skripts

Dieses Projekt war eine “Zusammenarbeit” mit ChatGPT-4, der neuesten Version der konversationellen KI von OpenAI. Gemeinsam haben wir das Python-Skript entworfen und dabei die Fähigkeit von GPT-4 genutzt, Code zu verstehen und zu generieren. Diese Synergie zwischen menschlichem Fachwissen und künstlicher Intelligenz ebnet den Weg für neue Methoden der Entwicklung und Innovation.

Ziele des Skripts

Das Hauptanliegen war, mit der Mistral AI API in Python zu experimentieren, um meine Fähigkeiten auf diesem Gebiet zu entwickeln.

  • Mistral AI testen: Die Funktionen von Mistral AI erkunden und verstehen, wie man sie effektiv nutzt.
  • Automatisierung mit Python: Zeigen, wie Python verwendet werden kann, um Interaktionen mit KI-APIs zu automatisieren.
  • Anreicherung von Prompts: Experimente mit der Anreicherung von Prompts durch die Integration von Webinhalten, die über Selenium extrahiert wurden.

Potenzial des Skripts

Dieses Skript eröffnet verschiedene Anwendungen, darunter:

  • Generierung von angereichertem Inhalt: Dynamisches Anreichern von Prompts mit relevanten Informationen aus dem Web.
  • Personalisierte virtuelle Assistenz: Nutzung der KI zur Erstellung personalisierter Antworten basierend auf Webinhalten.
  • Verbesserung von Automatisierungstools: Integration der KI in bestehende Tools für bessere Leistung.

Funktionsweise des Skripts

Das Skript mistral-ai.py verwendet das Modell mistral-small, um Antworten zu generieren. So funktioniert es:

  1. Abruf von Webinhalten: Nutzt Selenium, um den Inhalt der in den Prompts angegebenen URLs zu extrahieren.
  2. Generierung von Antworten: Sendet den angereicherten Prompt an Mistral AI, um eine Antwort zu erhalten.

Wichtige Hinweise

  • Dieses Skript ist ein POC: Es ist zu Bildungs- und Experimentierzwecken gedacht und nicht für den Produktionseinsatz bestimmt.
  • Immer die Nutzungsbedingungen der APIs und Websites einhalten: Beim Gebrauch der MistralAI API und dem Scraping von Webseiten stellen Sie sicher, dass Sie die Nutzungsbedingungen und Datenschutzrichtlinien einhalten.

Hier ist der vollständige Abschnitt mit dem aktualisierten Code und dem Anwendungsbeispiel, eingebettet wie im ursprünglichen Blogpost:

Update vom 28. September 2024: Skript für Mistral AI korrigiert

Seit der Erstveröffentlichung im Januar 2024 gab es wichtige Entwicklungen, insbesondere mit den neuesten Versionen der Mistral-API und der verwendeten Bibliotheken (Selenium und ChromeDriver). Das vorherige Skript ist nun veraltet und wurde aktualisiert, um die Kompatibilität mit diesen neuen Versionen sicherzustellen. Das neue Skript verwendet das Modell mistral-large-latest und bietet eine automatisierte Verwaltung von ChromeDriver über webdriver_manager.

Neuer Code des Skripts mistral-ai.py

#!/usr/bin/env python3
import re
import sys
import os
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
from mistralai import Mistral


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

    try:
        # Configure Chrome options
        chrome_options = Options()

        # Use ChromeDriverManager to automatically manage the ChromeDriver installation
        driver = webdriver.Chrome(
            service=Service(ChromeDriverManager().install()), 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")

        # Close the browser when you're done
        driver.quit()

        return web_content if web_content else None
    except Exception as e:
        return None


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)
            else:
                print(f"Erreur: Le contenu web pour {url} ne peut être récupéré.")
                sys.exit(1)  # Exit the script with an error code

    messages = [{"role": "user", "content": question}]
    response = client.chat.complete(model=model, messages=messages)

    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-large-latest"

try:
    client = Mistral(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

Beispielanwendung

# Optionnel - Installer les dépendances si nécessaire :
pip install selenium
pip install mistralai
pip install webdriver_manager

# 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 "Fais moi un résumé de ce site stp : https://docs.mistral.ai/"
### Résumé du Site de Mistral AI

#### Introduction
Mistral AI est un laboratoire de recherche spécialisé dans la création des meilleurs modèles open source au monde. La Plateforme permet aux développeurs et aux entreprises de créer de nouveaux produits et applications grâce aux modèles de langage (LLMs) open source et commerciaux de Mistral.

#### Modèles de Langage de Mistral AI
Mistral AI propose des modèles généralistes, spécialisés et de recherche, tous à la pointe de la technologie, et dotés de capacités multilingues, de génération de code, de mathématiques et de raisonnement avancé.

##### Modèles Généralistes
- **Mistral Large**: Le modèle de raisonnement de haut niveau pour des tâches complexes, avec la version v2 sortie en juillet 2024.
- **Mistral NeMo**: Le meilleur modèle multilingue open source, sorti en juillet 2024.

##### Modèles Spécialisés
- **Codestral**: Le modèle de langage de pointe pour le codage, sorti en mai 2024.
- **Mistral Embed**: Le modèle sémantique pour l'extraction de représentations de textes.

##### Modèles de Recherche
- **Mistral 7b**: Le premier modèle dense, sorti en septembre 2023.
- **Mixtral 8x7b**: Le premier modèle sparse mixture-of-experts, sorti en décembre 2023.
- **Mixtral 8x22b**: Le meilleur modèle open source à ce jour, sorti en avril 2024.
- **Mathstral 7b**: Le premier modèle de mathématiques open source, sorti en juillet 2024.
- **Codestral Mamba**: Le premier modèle mamba 2 open source, sorti en juillet 2024.

#### Exploration des APIs de Mistral AI
Les APIs de Mistral AI permettent de développer des applications LLM via différentes fonctionnalités :
- **Génération de texte** : Permet le streaming et l'affichage en temps réel des résultats partiels du modèle.
- **Génération de code** : Facilite les tâches de génération de code, y compris le remplissage de texte et la complétion de code.
- **Embeddings** : Utile pour la RAG (Retrieval-Augmented Generation) où il représente la signification du texte sous forme de liste de nombres.
- **Appel de fonctions** : Permet aux modèles Mistral de se connecter à des outils externes.
- **Fine-tuning** : Permet aux développeurs de créer des modèles personnalisés et spécialisés.
- **Mode JSON** : Permet aux développeurs de définir le format de réponse en objet JSON.
- **Guardrailing** : Permet aux développeurs d'appliquer des politiques au niveau système des modèles Mistral.

#### Liens Utiles
- **Quickstart**
- **Documentation**
- **Contribution**
- **Communauté**
- **Discord**
- **GitHub**

#### Droits d'Auteur
Copyright © 2024 Mistral AI.

Code des Skripts mistral-ai.py (veraltet mit den neuesten Versionen der Bibliotheken)

#!/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

Detaillierte Erklärung des Skripts

Import der Module

  • os, sys: Werden für die Interaktion mit dem Betriebssystem verwendet.
  • argparse: Ermöglicht die Verwaltung von Befehlszeilenargumenten.
  • re: Modul zur Verarbeitung regulärer Ausdrücke.
  • webdriver: Ermöglicht die Verwendung von Selenium zur Automatisierung von Aktionen in einem Webbrowser. ### Funktion get_web_content
  • Diese Funktion verwendet Selenium, um zu einer URL zu navigieren und deren Inhalt abzurufen.
  • Sie ist wesentlich, um die Prompts mit Informationen aus dem Internet zu bereichern.

Funktion get_response

  • Verarbeitet die im Prompt gefundenen URLs.
  • Ruft deren Inhalte über get_web_content ab.
  • Sendet den angereicherten Prompt an Mistral AI, um eine Antwort zu erhalten.

Block main

  • Einstiegspunkt des Skripts.
  • Verwaltet die Befehlszeilenargumente.
  • Initialisiert den Mistral AI Client und verarbeitet die Antwort.

Nutzung von Mistral AI

  • Das Skript interagiert mit dem Modell mistral-small.
  • Es sendet den Prompt, angereichert durch Webinhalte, an Mistral AI, um eine relevante Antwort zu erhalten.

Diese Übersicht des Skripts gibt eine Vorstellung von dessen Funktionsweise und Struktur und ermöglicht das Verständnis, wie Python, Selenium und Mistral AI zur Automatisierung und Bereicherung von Interaktionen mit der KI verwendet werden.

Anwendungsbeispiele

# 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é.

Dieser Dokument wurde von der Version fr in die Sprache de mit dem Modell gpt-4o übersetzt. Für weitere Informationen über den Übersetzungsprozess besuchen Sie https://gitlab.com/jls42/ai-powered-markdown-translator.