继OpenAI之后,在法国竞争对手Mistral AI上进行POC!

简介

本文探讨了一个Python脚本,作为与Mistral AI交互的概念验证(POC)而开发,Mistral AI是OpenAI的一个法国替代品。 它采用了之前为与OpenAI交互而开发的脚本的原理。

与GPT-4合作开发脚本

这个项目是与OpenAI最新版对话式AI ChatGPT-4的一次"合作"。我们一起设计了Python脚本,利用GPT-4理解和生成代码的能力。人类专业知识与人工智能之间的这种协同作用为开发和创新开辟了新的方法。

脚本目标

主要目的是通过Python试验Mistral AI API,以提高我在这个主题上的技能。

  • 测试Mistral AI:探索Mistral AI的功能,了解如何有效使用它。
  • 使用Python自动化:展示如何使用Python自动化与AI API的交互。
  • 丰富提示:通过集成通过Selenium检索的Web内容来试验提示的丰富。

脚本的潜力

这个脚本为各种应用打开了大门,特别是:

  • 生成丰富的内容:使用来自网络的相关信息动态地丰富提示。
  • 个性化虚拟助手:使用AI根据Web内容创建个性化响应。
  • 改进自动化工具:将AI集成到现有工具中以提高性能。

脚本的工作原理

脚本mistral-ai.py使用mistral-small模型生成响应。以下是它的工作原理:

  1. 检索Web内容:使用Selenium提取提示中指定的URL的内容。
  2. 生成响应:将丰富的提示发送到Mistral AI以获得响应。

重要说明

  • 此脚本是一个POC:它旨在用于教育和实验目的,而不是用于生产。
  • 始终遵守API和网站的使用规则:在使用MistralAI API和抓取网站时,请确保遵守使用条款和隐私政策。

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自动执行Web浏览器中的操作。

get_web_content函数

  • 此函数使用Selenium导航到URL并检索其内容。
  • 它对于使用来自Internet的信息丰富提示至关重要。

get_response函数

  • 处理提示中找到的URL。
  • 通过get_web_content检索其内容。
  • 将丰富的提示发送到Mistral AI以获得响应。

main

  • 脚本的入口点。
  • 处理命令行参数。
  • 初始化Mistral AI客户端并处理响应。

使用Mistral AI

  • 该脚本与mistral-small模型交互。
  • 它将由Web内容丰富的提示发送到Mistral AI以获得相关响应。 这个脚本概述了它的工作原理和结构,让我们了解它如何使用 Python、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é.

这份文档使用 claude-3-opus-20240229 模型从 fr 版本翻译成 zh 语言。有关翻译过程的更多信息,请访问 https://gitlab.com/jls42/ai-powered-markdown-translator