Após OpenAI, POC sobre Mistral AI, o concorrente francês!

Introdução

Este artigo explora um script Python desenvolvido como uma Proof of Concept (POC) para interagir com o Mistral AI, uma alternativa francesa ao OpenAI. Ele retoma o princípio do script desenvolvido anteriormente para interagir com o OpenAI.

Colaboração com GPT-4 para o desenvolvimento do script

Este projeto foi uma “colaboração” com o ChatGPT-4, a versão mais recente da IA conversacional da OpenAI. Juntos, concebemos o script Python, aproveitando a capacidade do GPT-4 de entender e gerar código. Esta sinergia entre a expertise humana e a inteligência artificial abre caminho para novos métodos de desenvolvimento e inovação.

Objetivos do Script

A intenção principal era experimentar com a API Mistral AI em Python para desenvolver minhas habilidades no assunto.

  • Testar Mistral AI: Explorar as funcionalidades do Mistral AI e entender como usá-lo de maneira eficaz.
  • Automatização com Python: Mostrar como Python pode ser usado para automatizar as interações com APIs de IA.
  • Enriquecimento dos Prompts: Experimentar o enriquecimento dos prompts integrando conteúdo web obtido via Selenium.

Potencial do Script

Este script abre caminho para diversas aplicações, entre elas:

  • Geração de conteúdo enriquecido: Enriquecer dinamicamente os prompts com informações relevantes retiradas da web.
  • Assistência virtual personalizada: Usar IA para criar respostas personalizadas baseadas no conteúdo web.
  • Melhoria das ferramentas de automação: Integrar IA nas ferramentas existentes para um melhor desempenho.

Funcionamento do Script

O script mistral-ai.py usa o modelo mistral-small para gerar respostas. Aqui está o seu funcionamento:

  1. Recuperação de Conteúdo Web: Utiliza Selenium para extrair o conteúdo das URLs especificadas no prompt.
  2. Geração de Respostas: Envia o prompt enriquecido ao Mistral AI para obter uma resposta.

Observações Importantes

  • Este script é um POC: Ele é destinado a fins educativos e experimentais, e não para uso em produção.
  • Sempre respeitar as regras de uso das API e dos sites web: Ao usar a API Mistral AI e ao fazer scraping de sites web, certifique-se de respeitar os termos de uso e as políticas de privacidade.

Código do 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

Explicação Detalhada do Script

Importação dos Módulos

  • os, sys: Utilizados para interações com o sistema operacional.
  • argparse: Permite gerenciar argumentos da linha de comando.
  • re: Módulo para o tratamento de expressões regulares.
  • webdriver: Permite usar Selenium para automatizar ações em um navegador web.

Função get_web_content

  • Esta função usa Selenium para navegar para uma URL e recuperar seu conteúdo.
  • Ela é essencial para enriquecer os prompts com informações retiradas da Internet.

Função get_response

  • Processa as URLs encontradas no prompt.
  • Recupera seu conteúdo via get_web_content.
  • Envia o prompt enriquecido ao Mistral AI para obter uma resposta.

Bloco main

  • Ponto de entrada do script.
  • Gerencia os argumentos da linha de comando.
  • Inicializa o cliente Mistral AI e processa a resposta.

Utilização do Mistral AI

  • O script interage com o modelo mistral-small.
  • Envia o prompt, enriquecido pelo conteúdo web, ao Mistral AI para obter uma resposta pertinente. Este resumo do script dá uma ideia de seu funcionamento e estrutura, permitindo entender como ele utiliza Python, Selenium e Mistral AI para automatizar e enriquecer as interações com a IA.

Exemplos de Uso

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

Este documento foi traduzido da versão fr para a língua pt usando o modelo gpt-4o. Para mais informações sobre o processo de tradução, consulte https://gitlab.com/jls42/ai-powered-markdown-translator