OpenAI에 이어 프랑스 경쟁사인 Mistral AI에 대한 POC!
소개
이 글은 Mistral AI와 상호작용하기 위해 개발한 파이썬 스크립트를 Proof of Concept(POC)로서 탐구합니다.
이 스크립트는 이전에 OpenAI와 상호작용하기 위해 개발한 스크립트의 원칙을 차용합니다.
스크립트 개발을 위한 GPT-4와의 협업
이 프로젝트는 OpenAI의 최신 대화형 AI인 ChatGPT-4와의 “협업”을 통해 진행되었습니다.
우리는 함께 파이썬 스크립트를 설계했으며, GPT-4의 코드 이해 및 생성 능력을 활용했습니다. 인간의 전문성과 인공지능의 시너지는 새로운 개발 및 혁신 방법을 열어줍니다.
스크립트 목표
주된 목적은 파이썬에서 Mistral AI API를 실험하여 관련 기술을 습득하는 것이었습니다.
- Mistral AI 테스트 : Mistral AI의 기능을 탐색하고 효과적으로 사용하는 방법을 이해합니다.
- 파이썬을 통한 자동화 : 파이썬을 사용해 AI API와의 상호작용을 자동화하는 방법을 보여줍니다.
- 프롬프트 강화 : Selenium을 통해 수집한 웹 콘텐츠를 통합하여 프롬프트를 강화하는 실험을 합니다.
스크립트의 잠재력
이 스크립트는 다음과 같은 다양한 응용으로 확장될 수 있습니다.
- 확장된 콘텐츠 생성 : 웹에서 얻은 관련 정보를 동적으로 프롬프트에 추가하여 콘텐츠를 풍부하게 생성합니다.
- 맞춤형 가상 지원 : 웹 콘텐츠를 기반으로 개인화된 응답을 생성하는 AI 기반 지원을 구현합니다.
- 자동화 도구 개선 : 기존 도구에 AI를 통합하여 성능을 향상시킵니다.
스크립트 동작 방식
스크립트 mistral-ai.py는 응답을 생성하기 위해 모델 mistral-small을 사용합니다. 작동 방식은 다음과 같습니다 :
- 웹 콘텐츠 수집 : Selenium을 사용하여 프롬프트에 지정된 URL의 콘텐츠를 추출합니다.
- 응답 생성 : 프롬프트로 강화된 내용을 Mistral AI에 전송하여 응답을 받습니다.
중요 참고사항
- 이 스크립트는 POC입니다 : 교육 및 실험 목적을 위해 설계되었으며 프로덕션 사용을 위한 것은 아닙니다.
- API 및 웹사이트 사용 규칙 준수 : MistralAI API 사용 및 웹 스크래핑 시 이용 약관과 개인정보처리방침을 반드시 준수하세요.
아래는 코드 업데이트와 사용 예시를 포함한 전체 섹션으로, 원 블로그 게시물과 동일하게 통합된 내용입니다.
2024년 9월 28일 업데이트 : Mistral AI용 스크립트 수정
2024년 1월에 처음 게시된 이후 Mistral API와 사용된 라이브러리(Selenium 및 ChromeDriver)의 최신 버전들이 중요한 변화를 겪었습니다. 이전 스크립트는 이제 구식이며 이러한 새로운 버전과의 호환성을 보장하기 위해 업데이트되었습니다. 새로운 스크립트는 모델 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을 통해 해당 URL의 콘텐츠를 가져옵니다.- 프롬프트로 강화된 내용을 Mistral AI에 전송하여 응답을 얻습니다.
블록 main
- 스크립트의 진입점입니다.
- 명령줄 인수를 처리합니다.
- Mistral AI 클라이언트를 초기화하고 응답을 처리합니다.
Mistral AI 사용
- 스크립트는 모델
mistral-small와 상호작용합니다. - 웹 콘텐츠로 강화된 프롬프트를 Mistral AI에 전송하여 적절한 응답을 얻습니다.
이 스크립트 개요는 파이썬, Selenium, Mistral AI를 사용하여 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 버전에서 ko 언어로 번역되었습니다. 번역 과정에 대한 자세한 정보는 https://gitlab.com/jls42/ai-powered-markdown-translator 를 참조하세요.