OpenAIに続き、フランスの競合であるMistral AIのPOC!
はじめに
この記事では、Mistral AI(OpenAIの代替となるフランスのソリューション)とやり取りするために開発したProof of Concept(POC)としてのPythonスクリプトを紹介します。 これは、以前にOpenAIとやり取りするために作成したスクリプトの原理を踏襲しています。
GPT-4との共同作業によるスクリプト開発
このプロジェクトは、OpenAIの会話型AIの最新バージョンであるChatGPT-4との”collaboration”でした。私たちは共同でPythonスクリプトを設計し、GPT-4のコード理解・生成能力を活用しました。人間の専門知識とAIの協調により、新しい開発手法とイノベーションの可能性が広がります。
スクリプトの目的
主な目的は、PythonでMistral AIのAPIを試し、この分野でのスキルを高めることでした。
- Mistral AIのテスト : Mistral AIの機能を探索し、効果的な利用方法を理解する。
- Pythonによる自動化 : Pythonを使ってAI APIとのやり取りを自動化する方法を示す。
- プロンプトの強化 : Seleniumで取得したウェブコンテンツを組み込んでプロンプトを強化する実験を行う。
スクリプトの可能性
このスクリプトは、以下のようなさまざまなアプリケーションに道を開きます:
- リッチコンテンツの生成 : ウェブから取得した関連情報でプロンプトを動的に強化する。
- パーソナライズされたバーチャルアシスタント : ウェブコンテンツに基づき、個別化された応答を生成するためにAIを活用する。
- 自動化ツールの改善 : 既存ツールにAIを統合してパフォーマンスを向上させる。
スクリプトの仕組み
スクリプト mistral-ai.py はモデル mistral-small を使用して応答を生成します。動作は以下の通りです:
- Webコンテンツの取得 : Seleniumを用いてプロンプト内で指定されたURLからコンテンツを抽出します。
- 応答の生成 : 強化されたプロンプトをMistral AIに送信し、応答を取得します。
重要な注意事項
- このスクリプトはPOCです : 教育目的および実験用であり、本番環境での使用を意図したものではありません。
- APIやウェブサイトの利用規約を順守すること : MistralAIのAPI利用やウェブスクレイピングを行う際には、利用規約およびプライバシーポリシーを必ず確認し、遵守してください。
以下は、コードの更新と使用例を含む完全なセクションで、元のブログ投稿と同様に組み込まれています:
2024年9月28日更新:Mistral AI向けに修正されたスクリプト
2024年1月の初回公開以降、SeleniumやChromeDriverなどで使用されるライブラリとMistralのAPIに重要な変更がありました。以前のスクリプトは現在の環境では古くなっているため、これらの新しいバージョンとの互換性を確保するためにスクリプトを更新しました。新しいスクリプトはモデル mistral-large-latest を使用し、webdriver_manager を介したChromeDriverの自動管理を追加しています。
新しいスクリプトコード 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
使用例
# 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.
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
- プロンプト内で見つかったURLを処理します。
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é.
この文書は gpt-5-mini モデルを使用して fr 版から ja 言語へ翻訳されました。翻訳プロセスの詳細については https://gitlab.com/jls42/ai-powered-markdown-translator をご覧ください。