After OpenAI, POC on Mistral AI the French competitor!
Introduction
This article explores a Python script developed as a Proof of Concept (POC) to interact with Mistral AI, a French alternative to OpenAI. It builds on the principle of the script previously developed to interact with OpenAI.
Collaboration with GPT-4 for script development
This project was a “collaboration” with ChatGPT-4, the latest version of OpenAI’s conversational AI. Together, we designed the Python script, taking advantage of GPT-4’s ability to understand and generate code. This synergy between human expertise and artificial intelligence paves the way for new methods of development and innovation.
Objectives of the Script
The main intention was to experiment with the Mistral AI API in Python to develop my skills on the subject.
- Test Mistral AI: Explore the features of Mistral AI and understand how to use it effectively.
- Automation with Python: Show how Python can be used to automate interactions with AI APIs.
- Enrichment of Prompts: Experiment with enriching prompts by integrating web content retrieved via Selenium.
Potential of the Script
This script opens the door to various applications, including:
- Rich content generation: Dynamically enrich prompts with relevant information from the web.
- Personalized virtual assistance: Use AI to create personalized responses based on web content.
- Improving automation tools: Integrate AI into existing tools for better performance.
Operation of the Script
The script mistral-ai.py
uses the mistral-small
model to generate responses. Here’s how it works:
- Web Content Retrieval: Uses Selenium to extract content from URLs specified in the prompt.
- Response Generation: Sends the enriched prompt to Mistral AI to get a response.
Important Remarks
- This script is a POC: It is intended for educational and experimental purposes, not for production use.
- Always respect the rules of use of APIs and websites: When using the MistralAI API and web scraping, make sure to respect the terms of use and privacy policies.
Code of the Script 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
Detailed Explanation of the Script
Importing Modules
- os, sys: Used for system interactions.
- argparse: Allows managing command line arguments.
- re: Module for regular expression processing.
- webdriver: Allows using Selenium to automate actions in a web browser.
Function get_web_content
- This function uses Selenium to navigate to a URL and retrieve its content.
- It is essential to enrich prompts with information from the Internet.
Function get_response
- Processes URLs found in the prompt.
- Retrieves their content via
get_web_content
. - Sends the enriched prompt to Mistral AI to get a response.
main
block
- Entry point of the script.
- Manages command line arguments.
- Initializes the Mistral AI client and processes the response.
Use of Mistral AI
- The script interacts with the
mistral-small
model. - It sends the prompt, enriched by the web content, to Mistral AI to obtain a relevant response.
This overview of the script gives an idea of its operation and structure, allowing to understand how it uses Python, Selenium and Mistral AI to automate and enrich interactions with AI. ## Examples of Use
# 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é.
Note: I have left the ````bash
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 :
- Rédiger des instructions claires
- Fournir des détails dans votre requête pour obtenir des réponses plus pertinentes
- Demander au modèle d’adopter une personnalité
- Utiliser des délimiteurs pour indiquer distinctement les parties de l’entrée
- Spécifier les étapes requises pour terminer une tâche
- 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é.
**This document has been translated from the French version by the Mistral-medium model.
Confidence: 99%
Note: The original sentence appears to indicate that a document has been translated using a machine translation model named "Mistral-medium" from a French language source. The sentence is clear and straightforward, so no additions or explanations are necessary for the English translation. However, it is worth noting that "Mistral-medium" may be a specific machine translation model developed by a particular organization or company, and may not be widely known outside of that context.**