Ingeniería de prompts incremental y comparación de modelos

Este notebook muestra cómo usar Pixeltable para la ingeniería de prompts iterativa y la comparación de modelos con los modelos de Mistral AI. Demuestra el almacenamiento persistente, las actualizaciones incrementales y cómo comparar fácilmente diferentes prompts y modelos.
Pixeltable es una infraestructura de datos que proporciona un enfoque declarativo e incremental para la IA multimodal.
Categoría: Ingeniería de Prompts y Comparación de Modelos
1. Configuración e Instalación
%pip install -qU pixeltable mistralai textblob nltk
import os
import getpass
import pixeltable as pxt
from pixeltable.functions.mistralai import chat_completions
from textblob import TextBlob
import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
import re
nltk.download('punkt', quiet=True)
nltk.download('stopwords', quiet=True)
nltk.download('punkt_tab', quiet=True)
True
if 'MISTRAL_API_KEY' not in os.environ:
os.environ['MISTRAL_API_KEY'] = getpass.getpass('Mistral AI API Key:')
Mistral AI API Key:··········
2. Crea una tabla de Pixeltable e inserta ejemplos
Primero, Pixeltable es persistente. A diferencia de las bibliotecas de Python en memoria como Pandas, Pixeltable es una base de datos. Cuando reinicias un kernel de notebook o inicias una nueva sesión de Python, tendrás acceso a todos los datos que almacenaste previamente en Pixeltable.
# Create a table to store prompts and results
pxt.drop_table('mistral_prompts', ignore_errors=True)
t = pxt.create_table('mistral_prompts', {
'task': pxt.StringType(),
'system': pxt.StringType(),
'input_text': pxt.StringType()
})
# Insert sample data
t.insert([
{'task': 'summarization',
'system': 'Summarize the following text:',
'input_text': 'Mistral AI is a French artificial intelligence (AI) research and development company that focuses on creating and applying AI technologies to various industries.'},
{'task': 'sentiment',
'system': 'Analyze the sentiment of this text:',
'input_text': 'I love using Mistral for my AI projects! They provide great LLMs and it is really easy to work with.'},
{'task': 'question_answering',
'system': 'Answer the following question:',
'input_text': 'What are the main benefits of using Mistral AI over other LLMs providers?'}
])
Creating a Pixeltable instance at: /root/.pixeltable
Connected to Pixeltable database at: postgresql+psycopg://postgres:@/pixeltable?host=/root/.pixeltable/pgdata
Created table `mistral_prompts`.
Inserting rows into `mistral_prompts`: 3 rows [00:00, 391.64 rows/s]
Inserted 3 rows with 0 errors.
UpdateStatus(num_rows=3, num_computed_values=9, num_excs=0, updated_cols=[], cols_with_excs=[])
3. Ejecuta funciones de inferencia de Mistral
Creamos columnas calculadas para indicarle a Pixeltable que ejecute la función chat_completions de Mistral y almacene la salida. Debido a que las columnas calculadas son una parte permanente de la tabla, se actualizarán automáticamente cada vez que se agreguen nuevos datos a la tabla. Para obtener más información, consulta nuestro tutorial.
En este ejemplo particular, estamos ejecutando los modelos open_mistral_nemo y mistral_medium y hacemos que la salida esté disponible en sus respectivas columnas.
# We are referencing columns from the 'mistral_prompts' table to dynamically compose the message for the Inference API.
msgs = [
{'role': 'system', 'content': t.system},
{'role': 'user', 'content': t.input_text}
]
# Run inference with open-mistral-nemo model
t['open_mistral_nemo'] = chat_completions(
messages=msgs,
model='open-mistral-nemo',
max_tokens=300,
top_p=0.9,
temperature=0.7
)
# Run inference with mistral-medium model
t['mistral_medium'] = chat_completions(
messages=msgs,
model='mistral-medium',
max_tokens=300,
top_p=0.9,
temperature=0.7
)
Computing cells: 100%|████████████████████████████████████████████| 3/3 [00:06<00:00, 2.28s/ cells]
Added 3 column values with 0 errors.
Computing cells: 100%|████████████████████████████████████████████| 3/3 [00:09<00:00, 3.31s/ cells]
Added 3 column values with 0 errors.
Las columnas de respuesta respectivas tienen el tipo de columna JSON y ahora podemos usar expresiones de ruta JSON para extraer las piezas de datos relevantes y hacerlas disponibles como columnas calculadas adicionales.
# Extract the response content as a string (by default JSON)
t['omn_response'] = t.open_mistral_nemo.choices[0].message.content.astype(pxt.StringType())
t['ml_response'] = t.mistral_medium.choices[0].message.content.astype(pxt.StringType())
Computing cells: 100%|███████████████████████████████████████████| 3/3 [00:00<00:00, 120.75 cells/s]
Added 3 column values with 0 errors.
Computing cells: 100%|███████████████████████████████████████████| 3/3 [00:00<00:00, 121.09 cells/s]
Added 3 column values with 0 errors.
# Display the responses
t.select(t.omn_response, t.ml_response).collect()
omn_response \
0 Mistral AI is a French company specializing in...
1 The sentiment of the text "I love using Mistra...
2 Using Mistral AI over other Large Language Mod...
ml_response
0 Mistral AI is a French firm specializing in AI...
1 The sentiment of this text is positive. The au...
2 Mistral AI is a cutting-edge company based in ...
| omn_response | ml_response |
|---|---|
| Mistral AI es una empresa francesa especializada en investigación y desarrollo de IA, con el objetivo de crear y aplicar tecnologías de IA en diversas industrias. | Mistral AI es una empresa francesa especializada en investigación y desarrollo de IA, con un enfoque en la implementación de tecnologías de IA en varias industrias. |
| El sentimiento del texto "¡Me encanta usar Mistral para mis proyectos de IA! Proporcionan excelentes LLM y es muy fácil trabajar con ellos." es abrumadoramente positivo. Aquí tienes un desglose de los indicadores: 1. **Palabras y frases positivas:** - "encanta" (emoción positiva fuerte) - "excelentes" (implica alta calidad o excelencia) - "muy fácil" (implica simplicidad y conveniencia) 2. **Sin palabras o frases negativas:** No hay palabras o frases negativas que puedan contrarrestar el sentimiento positivo. 3. **Signo de exclamación:** El uso de un signo de exclamación al final de la oración enfatiza el sentimiento positivo, haciéndolo más entusiasta. Basado en estos puntos, el sentimiento general del texto es extremadamente positivo. El hablante expresa una fuerte aprobación y satisfacción al usar Mistral para sus proyectos de IA. | El sentimiento de este texto es positivo. El autor expresa su amor por usar Mistral para sus proyectos de IA y destaca la calidad de los grandes modelos de lenguaje (LLM) proporcionados por Mistral, así como la facilidad de trabajar con ellos. |
| Usar Mistral AI sobre otros proveedores de Grandes Modelos de Lenguaje (LLM) ofrece varios beneficios principales: 1. **Modelos de Lenguaje Avanzados**: Mistral AI ofrece modelos de lenguaje de última generación como Mixtral 8x7B y Codestral, que están diseñados para comprender y generar texto similar al humano de manera más efectiva que muchos otros LLM. 2. **Ventana de Contexto**: Los modelos de Mistral AI tienen una ventana de contexto más grande, lo que les permite mantener el contexto sobre secuencias de texto más largas. Esto es particularmente útil para tareas como ...... énfasis en la seguridad y la moderación. Sus modelos están diseñados para minimizar las salidas dañinas, sesgadas u ofensivas, haciéndolos más seguros de usar. 6. **Transparencia y Documentación**: Mistral AI proporciona documentación clara y es transparente sobre las capacidades y limitaciones de sus modelos, lo que facilita a los desarrolladores la integración y el uso de sus modelos. 7. **Precios y Accesibilidad**: Si bien los precios pueden variar, Mistral AI tiene como objetivo proporcionar precios competitivos y ofrece niveles gratuitos, lo que los hace | Mistral AI es una empresa de vanguardia con sede en París, Francia, que desarrolla grandes modelos de lenguaje (LLM). Aunque no tengo acceso en tiempo real a detalles específicos sobre Mistral AI, puedo compartir algunos beneficios potenciales basados en la información disponible en su sitio web y las tendencias generales de la industria. Ten en cuenta que estos beneficios no están garantizados y pueden variar según tus necesidades y caso de uso específicos. 1. Personalización y Adaptabilidad: Mistral AI enfatiza la importancia de la personalización y ...... Perspectiva Europea: Como empresa europea, Mistral AI puede tener una mejor comprensión de las regulaciones europeas de privacidad de datos, como el GDPR, y los matices culturales, proporcionando soluciones más relevantes y conformes para las empresas europeas. 4. Investigación y Desarrollo: Mistral AI invierte fuertemente en investigación y desarrollo para mantenerse a la vanguardia de la tecnología de IA y procesamiento de lenguaje. Este compromiso con la innovación puede resultar en LLM más avanzados y capaces en comparación con otros proveedores. 5. Colaboración |
Podemos ver cómo se calculan los datos en las diferentes columnas de nuestra tabla.
t
table 'mistral_prompts'
Column Name Type Computed With
task string
system string
input_text string
open_mistral_nemo json chat_completions([{'role': 'system', 'content': system}, {'role': 'user', 'content': input_text}], top_p=0.9, model='open-mistral-nemo', temperature=0.7, max_tokens=300)
mistral_medium json chat_completions([{'role': 'system', 'content': system}, {'role': 'user', 'content': input_text}], top_p=0.9, model='mistral-medium', temperature=0.7, max_tokens=300)
omn_response string open_mistral_nemo.choices[0].message.content.astype(string)
ml_response string mistral_medium.choices[0].message.content.astype(string)
| Column Name | Type | Computed With |
|---|---|---|
| task | string | |
| system | string | |
| input_text | string | |
| open_mistral_nemo | json | chat_completions([{'role': 'system', 'content': system}, {'role': 'user', 'content': input_text}], top_p=0.9, model='open-mistral-nemo', temperature=0.7, max_tokens=300) |
| mistral_medium | json | chat_completions([{'role': 'system', 'content': system}, {'role': 'user', 'content': input_text}], top_p=0.9, model='mistral-medium', temperature=0.7, max_tokens=300) |
| omn_response | string | open_mistral_nemo.choices[0].message.content.astype(string) |
| ml_response | string | mistral_medium.choices[0].message.content.astype(string) |