El modelo base (FM) Mistral Large 2 (24.07) de Mistral AI ya está disponible de forma general en La roca madre del AmazonasMistral Large 2 es la versión más nueva de Mistral Large y, según Mistral AI, ofrece mejoras significativas en capacidades multilingües, matemáticas, razonamiento, codificación y mucho más.
En este post comentamos los beneficios y capacidades de este nuevo modelo con algunos ejemplos.
Descripción general de Mistral Large 2
Mistral Large 2 es un modelo avanzado de lenguaje grande (LLM) con capacidades de razonamiento, conocimiento y codificación de última generación según Mistral AI. Es multilingüe por diseño, y admite docenas de idiomas, incluidos inglés, francés, alemán, español, italiano, chino, japonés, coreano, portugués, holandés, polaco, árabe e hindi. Según Mistral AI, también se dedicó un esfuerzo significativo a mejorar las capacidades de razonamiento del modelo. Uno de los enfoques clave durante el entrenamiento fue minimizar la tendencia del modelo a alucinar o generar información que suena plausible pero que es incorrecta o irrelevante. Esto se logró afinando el modelo para que fuera más cauteloso y perspicaz en sus respuestas, asegurándose de que brindara resultados confiables y precisos. Además, el nuevo Mistral Large 2 está entrenado para reconocer cuando no puede encontrar soluciones o no tiene suficiente información para brindar una respuesta segura.
Según Mistral AI, el modelo también es competente en codificación, y está entrenado en más de 80 lenguajes de programación como Python, Java, C, C++, JavaScript, Bash, Swift y Fortran. Con sus capacidades de agente de primera clase, puede llamar funciones de forma nativa y generar JSON, lo que permite una interacción fluida con sistemas externos, API y herramientas. Además, Mistral Large 2 (24.07) cuenta con capacidades matemáticas y de razonamiento avanzadas, lo que lo convierte en un recurso poderoso para abordar desafíos lógicos y computacionales complejos.
Mistral Large 2 también ofrece una ventana de contexto ampliada de 128 000 tokens. En el momento de redactar este artículo, el modelo (mistral.mistral-large-2407-v1:0) está disponible en us-west-2 Región de AWS.
Empiece a utilizar Mistral Large 2 en Amazon Bedrock
Si no tiene experiencia en el uso de los modelos de Mistral AI, puede solicitar acceso a los modelos en la consola de Amazon Bedrock. Para obtener más detalles, consulte Administrar el acceso a los modelos de base de Amazon Bedrock.
Para probar Mistral Large 2 en la consola Amazon Bedrock, elija Texto o Charlar bajo Parques infantiles en el panel de navegación. Luego seleccione Seleccionar modelo y elige Mistral como la categoría y Mistral Grande 24.07 como modelo.
Por elección Ver API solicitud, también puede acceder al modelo utilizando ejemplos de código en el Interfaz de línea de comandos de AWS (AWS CLI) y SDK de AWS. Puede utilizar identificadores de modelo como mistral.mistral-large-2407-v1:0como se muestra en el siguiente código:
$ aws bedrock-runtime invoke-model \
--model-id mistral.mistral-large-2407-v1:0 \
--body "{\"prompt\":\"<s>[INST] this is where you place your input text [/INST]\", \"max_tokens\":200, \"temperature\":0.5, \"top_p\":0.9, \"top_k\":50}" \
--cli-binary-format raw-in-base64-out \
--region us-west-2 \
invoke-model-output.txt
En las siguientes secciones, profundizaremos en las capacidades de Mistral Large 2.
Ventana de contexto ampliada
Mistral Large 2 admite una ventana de contexto de 128 000 tokens, en comparación con Mistral Large (24.02), que tenía una ventana de contexto de 32 000 tokens. Esta ventana de contexto más grande es importante para los desarrolladores porque permite que el modelo procese y comprenda fragmentos de texto más largos, como documentos completos o archivos de código, sin perder contexto ni coherencia. Esto puede ser particularmente útil para tareas como generación de código, análisis de documentación o cualquier aplicación que requiera comprender y procesar grandes cantidades de datos de texto.
Generación de JSON y uso de herramientas
Mistral Large 2 ahora ofrece un modo de salida JSON nativo. Esta característica permite a los desarrolladores recibir las respuestas del modelo en un formato estructurado y fácil de leer que se puede integrar fácilmente en varias aplicaciones y sistemas. Como JSON es un estándar de intercambio de datos ampliamente adoptado, esta capacidad simplifica el proceso de trabajo con las salidas del modelo, lo que lo hace más accesible y práctico para los desarrolladores en diferentes dominios y casos de uso. Para obtener más información sobre cómo generar JSON con la API de Converse, consulte Generación de JSON con la API Converse de Amazon Bedrock.
Para generar JSON con la API de Converse, debe definir un toolSpecEn el siguiente código, presentamos un ejemplo para una empresa de agencias de viajes que tomará la información y las solicitudes de los pasajeros y las convertirá a JSON:
# Define the tool configuration
import json
tool_list = [
{
"toolSpec": {
"name": "travel_agent",
"description": "Converts trip details as a json structure.",
"inputSchema": {
"json": {
"type": "object",
"properties": {
"origin_airport": {
"type": "string",
"description": "Origin airport (IATA code)"
},
"destination_airport": {
"type": "boolean",
"description": "Destination airport (IATA code)"
},
"departure_date": {
"type": "string",
"description": "Departure date",
},
"return_date": {
"type": "string",
"description": "Return date",
}
},
"required": [
"origin_airport",
"destination_airport",
"departure_date",
"return_date"
]
}
}
}
}
]
content = """
I would like to book a flight from New York (JFK) to London (LHR) for a round-trip.
The departure date is June 15, 2023, and the return date is June 25, 2023.
For the flight preferences, I would prefer to fly with Delta or United Airlines.
My preferred departure time range is between 8 AM and 11 AM, and my preferred arrival time range is between 9 AM and 1 PM (local time in London).
I am open to flights with one stop, but no more than that.
Please include non-stop flight options if available.
"""
message = {
"role": "user",
"content": [
{ "text": f"<content>{content}</content>" },
{ "text": "Please create a well-structured JSON object representing the flight booking request, ensuring proper nesting and organization of the data. Include sample data for better understanding. Create the JSON based on the content within the <content> tags." }
],
}
# Bedrock client configuration
response = bedrock_client.converse(
modelId=model_id,
messages=[message],
inferenceConfig={
"maxTokens": 500,
"temperature": 0.1
},
toolConfig={
"tools": tool_list
}
)
response_message = response['output']['message']
response_content_blocks = response_message['content']
content_block = next((block for block in response_content_blocks if 'toolUse' in block), None)
tool_use_block = content_block['toolUse']
tool_result_dict = tool_use_block['input']
print(json.dumps(tool_result_dict, indent=4))
Recibimos la siguiente respuesta:
{
"origin_airport": "JFK",
"destination_airport": "LHR",
"departure_date": "2023-06-15",
"return_date": "2023-06-25"
}
Mistral Large 2 pudo tomar correctamente nuestra consulta de usuario y convertir la información apropiada a JSON.
Mistral Large 2 también es compatible con el API de Converse y uso de herramientasPuede utilizar la API de Amazon Bedrock para otorgarle a un modelo acceso a herramientas que lo ayuden a generar respuestas a los mensajes que le envíe. Por ejemplo, puede tener una aplicación de chat que permita a los usuarios encontrar la canción más popular que se reproduce en una estación de radio. Para responder a una solicitud de la canción más popular, un modelo necesita una herramienta que pueda consultar y devolver la información de la canción. El siguiente código muestra un ejemplo para obtener el horario de trenes correcto:
# Define the tool configuration
toolConfig = {
"tools": [
{
"toolSpec": {
"name": "shinkansen_schedule",
"description": "Fetches Shinkansen train schedule departure times for a specified station and time.",
"inputSchema": {
"json": {
"type": "object",
"properties": {
"station": {
"type": "string",
"description": "The station name."
},
"departure_time": {
"type": "string",
"description": "The departure time in HH:MM format."
}
},
"required": ["station", "departure_time"]
}
}
}
}
]
}
# Define shikansen schedule tool
def shinkansen_schedule(station, departure_time):
schedule = {
"Tokyo": {"09:00": "Hikari", "12:00": "Nozomi", "15:00": "Kodama"},
"Osaka": {"10:00": "Nozomi", "13:00": "Hikari", "16:00": "Kodama"}
}
return schedule.get(station, {}).get(departure_time, "No train found")
def prompt_mistral(prompt):
messages = [{"role": "user", "content": [{"text": prompt}]}]
converse_api_params = {
"modelId": model_id,
"messages": messages,
"toolConfig": toolConfig,
"inferenceConfig": {"temperature": 0.0, "maxTokens": 400},
}
response = bedrock_client.converse(**converse_api_params)
if response['output']['message']['content'][0].get('toolUse'):
tool_use = response['output']['message']['content'][0]['toolUse']
tool_name = tool_use['name']
tool_inputs = tool_use['input']
if tool_name == "shinkansen_schedule":
print("Mistral wants to use the shinkansen_schedule tool")
station = tool_inputs["station"]
departure_time = tool_inputs["departure_time"]
try:
result = shinkansen_schedule(station, departure_time)
print("Train schedule result:", result)
except ValueError as e:
print(f"Error: {str(e)}")
else:
print("Mistral responded with:")
print(response['output']['message']['content'][0]['text'])
prompt_mistral("What train departs Tokyo at 9:00?")
Recibimos la siguiente respuesta:
Mistral wants to use the shinkansen_schedule tool
Train schedule result: Hikari
Mistral Large 2 pudo identificar correctamente la herramienta shinkansen y demostrar su uso.
Soporte multilingüe
Mistral Large 2 ahora es compatible con una gran cantidad de idiomas basados en caracteres, como chino, japonés, coreano, árabe e hindi. Esta compatibilidad ampliada con idiomas permite a los desarrolladores crear aplicaciones y servicios que puedan satisfacer las necesidades de usuarios de diversos orígenes lingüísticos. Con capacidades multilingües, los desarrolladores pueden crear interfaces de usuario localizadas, proporcionar contenido y recursos específicos para cada idioma y brindar una experiencia perfecta para los usuarios independientemente de su lengua materna.
En el siguiente ejemplo, traducimos los correos electrónicos de clientes generados por el autor a diferentes idiomas, como hindi y japonés:
emails= """
"I recently bought your RGB gaming keyboard and absolutely love the customizable lighting features! Can you guide me on how to set up different profiles for each game I play?"
"I'm trying to use the macro keys on the gaming keyboard I just purchased, but they don't seem to be registering my inputs. Could you help me figure out what might be going wrong?"
"I'm considering buying your gaming keyboard and I'm curious about the key switch types. What options are available and what are their main differences?"
"I wanted to report a small issue where my keyboard's space bar is a bit squeaky. However, your quick-start guide was super helpful and I fixed it easily by following the lubrication tips. Just thought you might want to know!"
"My new gaming keyboard stopped working within a week of purchase. None of the keys respond, and the lights don't turn on. I need a solution or a replacement as soon as possible."
"I've noticed that the letters on the keys of my gaming keyboard are starting to fade after several months of use. Is this covered by the warranty?"
"I had an issue where my keyboard settings would reset every time I restarted my PC. I figured out it was due to a software conflict and resolved it by updating the firmware. Just wanted to ask if there are any new updates coming soon?"
"I've been having trouble with the keyboard software not saving my configurations, and it's starting to get frustrating. What can be done to ensure my settings are saved permanently?"
"""
def converse(prompt, inference_config):
messages = [{"role": "user", "content": [{"text": prompt}]}]
response = bedrock_client.converse(
messages=messages,
modelId=model_id,
inferenceConfig=inference_config
)
generated_text = response['output']['message']['content'][0]['text']
print(generated_text)
return generated_text
prompt=f"""
emails={emails}
Translate the following customer emails into these languages:
1. Hindi
2. Japanese
Label each language section accordingly""".format(emails=emails)
inference_config = {"temperature": 0.0, "maxTokens": 4000, "topP": 0.1}
response = converse(prompt, inference_config)
Recibimos la siguiente respuesta:
1. "मैंने हाल ही में आपका RGB गेमिंग कीबोर्ड खरीदा और कस्टमाइजेबल लाइटिंग फीचर्स से बहुत प्रेम करता हूँ! क्या आप मुझे बता सकते हैं कि मैं हर गेम के लिए अलग-अलग प्रोफाइल कैसे सेट कर सकता हूँ?"
2. "मैं अपने नए गेमिंग कीबोर्ड पर मैक्रो कीज का उपयोग करने की कोशिश कर रहा हूँ, लेकिन वे मेरे इनपुट्स को रजिस्टर नहीं कर रहे हैं। क्या आप मुझे बता सकते हैं कि क्या गलत हो सकता है?"
3. "मैं आपका गेमिंग कीबोर्ड खरीदने के बारे में सोच रहा हूँ और मुझे की स्विच टाइप्स के बारे में जानना है। क्या विकल्प उपलब्ध हैं और उनके मुख्य अंतर क्या हैं?"
4. "मैं यह रिपोर्ट करना चाहता था कि मेरे कीबोर्ड का स्पेस बार थोड़ा सा चरमरा रहा है। हालाँकि, आपका क्विक-स्टार्ट गाइड बहुत मददगार था और मैंने लुब्रिकेशन टिप्स का पालन करके इसे आसानी से ठीक कर दिया। बस यह जानना चाहता था कि शायद आपको पता चलना चाहिए!"
5. "मेरा नया गेमिंग कीबोर्ड खरीद के एक सप्ताह के भीतर काम करना बंद हो गया। कोई भी की जवाब नहीं दे रहा है, और लाइट्स भी नहीं चालू हो रहे हैं। मुझे एक समाधान या एक रिप्लेसमेंट जितनी जल्दी हो सके चाहिए।"
6. "मैंने नोट किया है कि मेरे गेमिंग कीबोर्ड के कीज पर अक्षर कुछ महीनों के उपयोग के बाद फेड होने लगे हैं। क्या यह वारंटी के तहत कवर है?"
7. "मेरे कीबोर्ड सेटिंग्स हर बार मेरे पीसी को रीस्टार्ट करने पर रीसेट हो जाती थीं। मैंने पता लगाया कि यह एक सॉफ्टवेयर कॉन्फ्लिक्ट के कारण था और फर्मवेयर अपडेट करके इसे सुलझा दिया। बस पूछना चाहता था कि क्या कोई नए अपडेट आने वाले हैं?"
8. "मेरे कीबोर्ड सॉफ्टवेयर मेरी कॉन्फ़िगरेशन को सेव नहीं कर रहे हैं, और यह अब परेशान करने लगा है। मेरे सेटिंग्स को स्थायी रूप से सेव करने के लिए क्या किया जा सकता है?"
### Japanese
1. "最近、あなたのRGBゲーミングキーボードを購入し、カスタマイズ可能なライティング機能が大好きです! 各ゲームごとに異なるプロファイルを設定する方法を教えていただけますか?"
2. "新しく購入したゲーミングキーボードのマクロキーを使おうとしていますが、入力が認識されません。何が問題か教えていただけますか?"
3. "あなたのゲーミングキーボードを購入しようと考えていますが、キースイッチの種類について知りたいです。どのようなオプションがあり、その主な違いは何ですか?"
4. "キーボードのスペースバーが少しきしむようになりました。ただし、クイックスタートガイドが非常に役立ち、潤滑のヒントに従って簡単に修理できました。ただ、知っておいてほしいと思いました!"
5. "新しいゲーミングキーボードが購入後1週間で動作しなくなりました。どのキーも反応せず、ライトも点きません。できるだけ早く解決策や交換をお願いします。"
6. "ゲーミングキーボードのキーの文字が数ヶ月の使用後に消え始めました。これは保証に含まれますか?"
7. "キーボードの設定がPCを再起動するたびにリセットされていました。ソフトウェアの競合が原因であることがわかり、ファームウェアを更新して解決しました。新しいアップデートが近々来るのか教えていただけますか?"
8. "キーボードソフトウェアが設定を保存しないため、非常に困っています。設定を永続的に保存するために何ができますか?"
Tareas de codificación
Mistral Large 2 se ha entrenado en más de 80 lenguajes de codificación, incluidos los más populares como Python, Java, C, C++, JavaScript y Bash, así como lenguajes más especializados como Swift y Fortran. Este soporte integral de lenguajes permite a los desarrolladores abordar una amplia gama de tareas y proyectos de codificación en varios dominios y plataformas. Ya sea que trabaje en desarrollo web, aplicaciones móviles, computación científica o programación de sistemas, Mistral Large 2 puede ayudarlo con la generación de código, la depuración, la refactorización y otras tareas relacionadas con la codificación. Por ejemplo, el siguiente código solicita al modelo que genere una función de Python:
prompt = """
Write a Python function called palindrome_prime_finder that finds all prime numbers within a given range that are also palindromes when written in base 10 (decimal system).
"""
inference_config = {"temperature": 0.0, "maxTokens": 1000, "topP": 0.1}
response = converse(prompt, inference_config)
Recibimos la siguiente respuesta:
Certainly! Below is a Python function called `palindrome_prime_finder` that finds all prime numbers within a given range that are also palindromes when written in base 10.
```python
def is_prime(n):
"""Check if a number is prime."""
if n <= 1:
return False
if n <= 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
def is_palindrome(n):
"""Check if a number is a palindrome."""
return str(n) == str(n)[::-1]
def palindrome_prime_finder(start, end):
"""Find all prime numbers within a given range that are also palindromes."""
palindrome_primes = []
for num in range(start, end + 1):
if is_prime(num) and is_palindrome(num):
palindrome_primes.append(num)
return palindrome_primes
# Example usage:
start_range = 1
end_range = 1000
print(palindrome_prime_finder(start_range, end_range))
```
### Explanation:
1. **is_prime(n)**: This function checks if a number `n` is prime. It uses a basic primality test that eliminates even numbers and numbers divisible by 3 early, then checks divisibility up to the square root of `n`.
2. **is_palindrome(n)**: This function checks if a number `n` is a palindrome by converting it to a string and comparing it to its reverse.
3. **palindrome_prime_finder(start, end)**: This function iterates through all numbers in the given range `[start, end]`. For each number, it checks if it is both a prime and a palindrome. If both conditions are met, the number is added to the list `palindrome_primes`.
### Example Usage:
The example usage finds all palindromic prime numbers between 1 and 1000. You can adjust the `start_range` and `end_range` variables to find palindromic primes in any desired range.
Conclusión
Mistral Large 2 FM de Mistral AI ya está disponible en Amazon Bedrock en la región Oeste de EE. UU. (Oregón). Para comenzar a utilizar Mistral Large 2 en Amazon Bedrock, visite el sitio web Consola Bedrock de Amazon.
¿Te interesa sumergirte más profundamente? Echa un vistazo a Repositorio de Mistral en AWSPara obtener más información sobre Mistral AI en Amazon Bedrock, consulte Los modelos de IA de Mistral ya están disponibles en Amazon Bedrock.
Sobre los autores
Niithiyn Vijeaswaran Niithiyn es arquitecto de soluciones en AWS. Su área de especialización es la IA generativa y los aceleradores de IA de AWS. Tiene una licenciatura en Ciencias de la Computación y Bioinformática. Niithiyn trabaja en estrecha colaboración con el equipo de IA generativa de GTM para ayudar a los clientes de AWS en múltiples frentes y acelerar su adopción de la IA generativa. Es un ávido fanático de los Dallas Mavericks y disfruta coleccionando zapatillas.
Armando Díaz Armando es arquitecto de soluciones en AWS. Se centra en la IA generativa, la IA/ML y el análisis de datos. En AWS, Armando ayuda a los clientes a integrar capacidades de IA generativa de vanguardia en sus sistemas, fomentando la innovación y la ventaja competitiva. Cuando no está trabajando, disfruta de pasar tiempo con su esposa y su familia, hacer caminatas y viajar por el mundo.
Preston Tuggle es un arquitecto de soluciones sénior especializado que trabaja en IA generativa.