OpenAI o1: Lo que los desarrolladores necesitan saber
En septiembre de 2024, OpenAI presentó la serie más reciente de sus Modelos de Lenguaje Grandes (LLMs) propietarios, llamada la serie o1. La característica principal que diferencia a la serie o1 del modelo más potente anterior de OpenAI, GPT-4o, es su capacidad de reflexionar sobre los problemas antes de generar una respuesta final para el usuario. Esto significa que los modelos o1 están entrenados para descomponer los problemas en componentes más pequeños y resolverlos paso a paso, un proceso comúnmente denominado razonamiento de cadena de pensamiento.
En este artículo, hablaremos sobre la serie o1 desde la perspectiva de un desarrollador, explorando cómo se pueden implementar estos modelos para casos de uso sofisticados. Antes de eso, examinemos brevemente qué son los modelos o1, cómo se desempeñan en comparación con GPT-4o y las nuevas funciones que OpenAI introdujo con esta serie.
Breve introducción a los modelos o1
OpenAI ha introducido tres variantes en la serie o1: o1-preview, o1 y o1-mini, siendo o1-preview la primera en lanzarse. Las tres variantes comparten una característica única en comparación con otros modelos de OpenAI como GPT-4: capacidades avanzadas de razonamiento.
Los modelos o1 están diseñados para dedicar más tiempo a analizar un problema antes de generar una respuesta. Este enfoque imita cómo los humanos desglosan y resuelven problemas complejos. Para cualquier problema dado, estos modelos intentan descomponer la pregunta, articular su proceso de pensamiento paso a paso y explorar soluciones alternativas si su razonamiento inicial es inadecuado.
Dado que estos modelos son completamente de código cerrado, no hay detalles explícitos disponibles sobre su proceso de entrenamiento. Sin embargo, existen dos enfoques probables utilizados durante el entrenamiento de los modelos o1: prompting de cadena de pensamiento (CoT) y aprendizaje por refuerzo (RL).
El concepto detrás del prompting CoT es sencillo. En lugar de darle al modelo las respuestas directas para problemas dados, los prompts CoT incluyen pasos contextuales detallados para resolver los problemas, como puedes ver a continuación:
Comparación entre un prompt normal y un prompt CoT.
Al combinar una enorme cantidad de datos de prompting CoT con RL durante el ajuste fino, el modelo refina iterativamente su proceso de razonamiento. Aprende a identificar fallos en su lógica y a adoptar enfoques más sensatos para la resolución de problemas. Luego, el modelo es recompensado por generar pasos de razonamiento precisos y respuestas correctas. Como resultado, los modelos de la serie o1 pueden pensar críticamente y razonar eficazmente antes de proporcionar respuestas.
Para implementar esta capacidad de razonamiento, OpenAI introdujo tokens adicionales llamados "tokens de razonamiento" en los modelos o1. A diferencia de otros LLMs que usan solo tokens de entrada y salida, los modelos o1 utilizan tokens de razonamiento para facilitar su proceso de pensamiento.
Estos tokens de razonamiento permiten al modelo analizar prompts y considerar múltiples enfoques antes de generar tokens de salida. Una vez que se finaliza una respuesta, los tokens de razonamiento se descartan del contexto. A continuación se muestra una visualización de la dinámica de los tokens de entrada, salida y razonamiento durante múltiples rondas de interacciones usuario-modelo:
La dinámica de los tokens de entrada, salida y razonamiento durante múltiples rondas de interacción usuario-modelo. Fuente.
Qué hace que o1 sea único (y por qué les importa a los desarrolladores)
En esencia, los modelos o1 se basan en todo lo que hace que GPT-4o sea excelente, pero llevan los límites más allá al combinar enfoques de cadena de pensamiento (CoT) y aprendizaje por refuerzo (RL). Como resultado, los modelos o1 superan a GPT-4o en diversos dominios que requieren razonamiento complejo, como programación, matemáticas y ciencia general.
Como se ilustra en la visualización a continuación, tanto los modelos o1-preview como o1 superan a GPT-4o en benchmarks que exigen razonamiento avanzado. Específicamente, tienen un rendimiento significativamente mejor en tres benchmarks clave de razonamiento científico: AIME 2024, Codeforces y GPQA Diamond.
AIME 2024: Un benchmark basado en exámenes de matemáticas diseñados para evaluar a los estudiantes de matemáticas de secundaria más brillantes de EE. UU.
GPQA Diamond: Mide la experiencia en materias científicas como química, biología y física.
Codeforces: Incluye desafíos de concursos de programación competitiva.
Comparación entre GPT-4o, o1-preview y el modelo o1 en varios benchmarks de razonamiento. Fuente.
Si bien el modelo o1-preview demuestra un rendimiento superior en tareas de razonamiento complejo en comparación con GPT-4o, tiene desventajas notables:
Alto uso de tokens de razonamiento: o1-preview genera una gran cantidad de tokens de razonamiento, que consumen una parte significativa de la ventana de contexto de 128,000 tokens del modelo. Para tareas que requieren una gran cantidad de tokens de entrada-salida, las respuestas pueden truncarse. Esto también aumenta los costos de uso en comparación con GPT-4o.
Problemas de latencia: La gran cantidad de tokens contribuye a tiempos de respuesta más lentos. En promedio, la latencia de o1-preview es aproximadamente 10 veces más lenta que la de GPT-4o, lo que lo hace menos ideal para su uso en producción.
Para abordar estas limitaciones, OpenAI introdujo dos modelos adicionales en la serie o1: o1-mini y el modelo o1 más reciente.
o1-mini es un modelo más pequeño en comparación con o1-preview y está específicamente optimizado para datos relacionados con STEM. Esta optimización le permite superar a o1-preview en benchmarks científicos como AIME 2024 (logrando un 70% de precisión en comparación con el 44.6% de o1-preview) y Codeforces.
Comparación entre GPT-4o, o1-preview y el modelo o1-mini en benchmarks de Codeforces. Fuente.
Además, al ser más pequeño que o1-preview, o1-mini tiene una latencia más rápida. El tiempo de inferencia de este modelo es aproximadamente de 3 a 5 veces más rápido que el de o1-preview. Sin embargo, es importante señalar que el rendimiento de o1-mini sigue siendo peor que el de o1-preview en benchmarks no relacionados con STEM.
Para mejorar aún más el rendimiento y las capacidades, OpenAI introdujo la versión más reciente del modelo o1. Como se muestra en la visualización anterior, este modelo supera a o1-preview en todos los benchmarks científicos.
Más allá de un rendimiento más sólido en tareas de razonamiento complejo, el modelo o1 más reciente también ofrece varias mejoras clave:
Ventana de contexto más grande: Admite hasta 200,000 tokens para entrada y un máximo de 100,000 tokens de salida.
Uso eficiente de tokens de razonamiento: Usa en promedio alrededor de un 60% menos de tokens de razonamiento que o1-preview para cualquier solicitud dada. Esto hace que la latencia de los modelos o1 más recientes sea mejor que la de o1 preview.
Capacidades de visión: Acepta imágenes como entradas, lo que permite razonar sobre datos visuales. Ten en cuenta que esta función no está disponible en los modelos o1-preview ni o1-mini.
Integración mejorada con las herramientas de OpenAI: Incluye funcionalidad para salidas estructuradas, llamada a funciones y estilos o tonos definidos por el desarrollador. Además, los usuarios pueden ajustar el esfuerzo de razonamiento (bajo, medio o alto) usando el parámetro
reasoning_effortpara equilibrar velocidad, costo y calidad.
Casos de uso reales de los modelos o1
Hay muchos casos de uso reales que podemos resolver usando la serie o1. En esta sección, te guiaremos a través de varios ejemplos, como razonamiento de problemas complejos, extracción de información y deducción a partir de textos, Retrieval Augmented Generation (RAG), comprensión de imágenes y llamada a funciones.
Sin embargo, al momento de escribir este artículo, la disponibilidad del último modelo o1 aún es limitada, ya que solo está disponible para ciertos niveles de usuario. Por lo tanto, demostraremos los fragmentos de código para los casos de uso utilizando el modelo o1-mini siempre que sea posible, ya que este modelo es accesible para la mayoría de los niveles de usuario (del Nivel 1 al 5).
Antes de continuar con los ejemplos, primero debemos configurar nuestra clave de API de OpenAI. Puedes aprender más sobre cómo configurar tu propia clave de API aquí. A continuación, coloca la clave de API como parte del entorno de la siguiente manera:
import getpass
import os
if not os.environ.get("OPENAI_API_KEY"):
os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter API key for OpenAI: ")
Y ahora estamos listos para usar los modelos de OpenAI.
Razonamiento de problemas complejos
La aplicación más directa del modelo o1 es resolver problemas complejos de matemáticas y programación que requieren un pensamiento profundo antes de que podamos llegar a una respuesta. Digamos que queremos que nos enseñe cómo resolver un problema matemático; podemos hacerlo llamando a la API de OpenAI de la siguiente manera:
from openai import OpenAI
client = OpenAI()
prompt = """
Julie is reading a 120-page book. Yesterday, she was able to read 12 pages and
today, she read twice as many pages as yesterday. If she wants to read half of the
remaining pages tomorrow, how many pages should she read?
"""
response = client.chat.completions.create(
model="o1-mini",
messages=[
{
"role": "user",
"content": prompt
}
]
)
print(response.choices[0].message.content)
"""
Output:
To determine how many pages Julie should read tomorrow, let's break down the problem step by step:
1. **Total Pages in the Book:**
The book has **120 pages**.
2. **Pages Read Yesterday:**
Julie read **12 pages** yesterday.
3. **Pages Read Today:**
Today, she read **twice** as many pages as yesterday.
( 2 times 12 = 24 ) pages.
4. **Total Pages Read in Two Days:**
( 12 text{ (yesterday)} + 24 text{ (today)} = 36 ) pages.
5. **Remaining Pages:**
( 120 text{ (total)} - 36 text{ (read)} = 84 ) pages left.
6. **Pages to Read Tomorrow:**
She wants to read **half** of the remaining pages:
( frac{84}{2} = 42 ) pages.
**Answer:**
Julie should read **42 pages** tomorrow.
"""
Como puedes ver, en lugar de proporcionar solo la respuesta final, el modelo genera su proceso de pensamiento paso a paso, lo que mejora nuestra comprensión de cómo abordar problemas similares en el futuro.
Automatizaciones creativas
Al igual que con otros LLM de OpenAI, el modelo o1 puede utilizarse para la automatización creativa, como resumir el contenido de un PDF, generar un guion de YouTube a partir de un artículo y extraer y deducir información particular de documentos.
En el siguiente ejemplo, usaremos el modelo o1-mini para extraer información particular de un texto con un esquema de salida específico. No solo extraeremos información contenida en el texto, sino que también le pediremos al modelo que deduzca información realizando operaciones matemáticas simples.
import requests
def fetch_html(url):
response = requests.get(url)
if response.status_code == 200:
return response.text
else:
return None
url = "<https://en.wikipedia.org/wiki/List_of_NBA_career_scoring_leaders>"
html_content = fetch_html(url)
json_format = """
{
companies: [
{
"player_name": "Tim Duncan",,
"total_points": "1750",
"total_points_without_free_throw": "1050",
}
]
}
"""
o1_response = client.chat.completions.create(
model="o1-mini",
messages=[
{
"role": "user",
"content": f"""
Extract information from the text.
- Read the following html and return players with the most points without free throw in the NBA's history: {html_content}.
- Devuelve el resultado en orden de mayor a menor y muéstrame los 5 principales. Devuélvelo solo como JSON con el siguiente formato: {json_format}"
"""
}
]
)
print(o1_response.choices[0].message.content)
"""
Salida:
```json
{
"players": [
{
"player_name": "LeBron James",
"total_points": "41599",
"total_points_without_free_throw": "33048"
},
{
"player_name": "Kareem Abdul-Jabbar",
"total_points": "38387",
"total_points_without_free_throw": "31675"
},
{
"player_name": "Karl Malone",
"total_points": "36928",
"total_points_without_free_throw": "27141"
},
{
"player_name": "Wilt Chamberlain",
"total_points": "31419",
"total_points_without_free_throw": "25362"
},
{
"player_name": "Kobe Bryant",
"total_points": "33643",
"total_points_without_free_throw": "25265"
}
]
}
"""
Como puedes ver, el modelo o1 no solo extrae la información de acuerdo con el esquema de salida que definimos, sino que también es capaz de realizar operaciones matemáticas e incluir el resultado apropiado en el esquema de salida junto con otra información extraída.
Motores de búsqueda impulsados por IA
También podemos usar el modelo o1 en un entorno de generación aumentada por recuperación (RAG), donde lo usamos para generar una respuesta a una consulta basada en el contexto proporcionado obtenido mediante búsqueda por similitud.
El flujo de trabajo habitual de una aplicación RAG es el siguiente: dada una consulta de usuario, la consulta se transforma en un embedding usando un modelo de embedding de nuestra elección, como text-embedding-3-large de OpenAI. A continuación, el embedding de la consulta se compara con una colección de embeddings de contexto almacenados dentro de una base de datos vectorial mediante búsqueda por similitud. Luego se recuperan los top-k contextos más relevantes y se añaden al prompt, proporcionando a nuestro LLM contexto útil para responder a la consulta.
Flujo de trabajo RAG.
Como puedes ver, para usar el modelo o1 en un caso de uso RAG, normalmente lo combinamos con bases de datos vectoriales, como Milvus, para almacenar enormes cantidades de contexto y realizar búsquedas por similitud eficientes y rápidas.
En el ejemplo a continuación, crearemos una aplicación RAG sencilla usando la combinación del modelo o1-mini y Milvus.
Primero, cargamos la fuente de texto desde HTML, que usaremos como posibles contextos en nuestra aplicación RAG. A continuación, dividimos el texto original en fragmentos, cada uno compuesto por aproximadamente 2000 caracteres. Después del proceso de fragmentación, podemos almacenar todos los fragmentos dentro de la base de datos vectorial Milvus. Estableceremos el tipo de indexación en "FLAT" ya que queremos realizar una búsqueda exhaustiva para encontrar los mejores contextos posibles para cualquier consulta dada.
!pip install --upgrade --quiet langchain langchain-core langchain-community langchain-text-splitters langchain-milvus langchain-openai bs4
import bs4
from langchain_community.document_loaders import WebBaseLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_milvus import Milvus
from langchain_openai import OpenAIEmbeddings
# Create a WebBaseLoader instance to load documents from web sources
loader = WebBaseLoader(
web_paths=(
"<https://lilianweng.github.io/posts/2023-06-23-agent/>",
"<https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/>",
),
bs_kwargs=dict(
parse_only=bs4.SoupStrainer(
class_=("post-content", "post-title", "post-header")
)
),
)
# Load documents from web sources using the loader
documents = loader.load()
# Initialize a RecursiveCharacterTextSplitter for splitting text into chunks
text_splitter = RecursiveCharacterTextSplitter(chunk_size=2000, chunk_overlap=200)
# Split the documents into chunks using the text_splitter
docs = text_splitter.split_documents(documents)
# Define the default embedding model from OpenAI
embeddings = OpenAIEmbeddings()
# Store the chunked data into Milvus
vectorstore = Milvus.from_documents(
documents=docs,
embedding=embeddings,
connection_args={
"uri": "./milvus_demo.db",
},
index_params={"index_type": "FLAT", "metric_type": "L2"},
drop_old=True, # Drop the old Milvus collection if it exists
)
Ahora podemos definir el modelo y el prompt, que contiene instrucciones como "Usa el contexto proporcionado para responder la consulta", así como la consulta en sí. Obtendremos el contexto top-1 más relevante como resultado.
from langchain_openai import ChatOpenAI
from langchain import hub
# Initialize the OpenAI language model for response generation
llm = ChatOpenAI(model_name="o1-mini", temperature=1)
# Define the prompt template for generating AI responses
prompt = hub.pull("rlm/rag-prompt")
# Convert the vector store to a retriever
retriever = vectorstore.as_retriever()
query = "What is self-reflection of an AI Agent?"
vectorstore.similarity_search(query, k=1)
Finalmente, podemos orquestar fácilmente el flujo de trabajo RAG con LangChain y luego obtener la respuesta de nuestro modelo o1-mini a cualquier consulta dada usando el contexto más relevante obtenido de nuestra base de datos Milvus.
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
# Define a function to format the retrieved documents
def format_docs(docs):
return "nn".join(doc.page_content for doc in docs)
# Define the RAG (Retrieval-Augmented Generation) chain for AI response generation
rag_chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)
# rag_chain.get_graph().print_ascii()
# Invoke the RAG chain with a specific question and retrieve the response
res = rag_chain.invoke(query)
print(res)
"""
Output:
Self-reflection in an AI agent refers to its ability to evaluate and refine its own actions and decisions based on past experiences. This process allows the agent to identify and correct mistakes, thereby improving its performance over time. It is essential for handling complex, real-world tasks where iterative improvement through trial and error is necessary.
"""
Comprensión de imágenes
Una de las principales ventajas del último modelo o1 en comparación con o1-preview y o1-mini es su capacidad multimodal: acepta no solo texto como entrada, sino también imágenes. Esto hace que el modelo o1 sea ideal para casos de uso de razonamiento sobre imágenes, como describir el contenido de una imagen, resumir texto en una imagen y extraer información estructurada de una imagen.
Hay dos formas en que podemos proporcionar al modelo una imagen como entrada: pasando el enlace a la imagen o pasando la imagen codificada en Base64. A continuación se muestra el código de ejemplo para hacerlo:
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="o1",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What's in this image?"},
{
"type": "image_url",
"image_url": {
"url": "<https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg>",
},
},
],
}
],
max_tokens=300,
)
print(response.choices[0])
Llamada a funciones
Otro caso de uso emocionante que podemos explorar con el modelo o1 es la llamada a funciones. En esencia, la llamada a funciones permite que el LLM interactúe con nuestro código o servicios externos, como un motor de búsqueda o una API. Con su capacidad para pensar a fondo un problema, puede usar con precisión los servicios externos adecuados para ayudarlo a resolver la tarea en cuestión.
Como ejemplo, digamos que queremos saber el clima actual en Los Ángeles. Sin servicios externos, sería imposible que el LLM nos diera la respuesta correcta, y es probable que empiece a alucinar. Si tenemos acceso a la API del clima, podemos usar esta "herramienta" como un recurso adicional para ayudar a nuestro modelo o1 a responder nuestra consulta.
Puedes obtener más información sobre la implementación en código de la llamada a funciones para crear un modelo agéntico en las documentaciones proporcionadas por OpenAI o LangChain.
Comparación entre el modelo o1 y sus alternativas
En esta sección, compararemos los pros y los contras del modelo o1 con sus alternativas, como GPT 4o, o3-mini, Claude 3.5 Sonnet y DeepSeek R1.
Comparación con GPT 4o
Aunque el rendimiento del modelo o1 es muy superior al del modelo GPT-4o en benchmarks de razonamiento complejo, eso no significa que siempre debamos elegir el modelo o1 en lugar de GPT-4o.
En general, el modelo o1 destaca en tareas que requieren procesos de pensamiento complejos y detallados, como las tareas de ideación. Por ejemplo, podemos usar el modelo o1 como socio para ayudarnos a planificar estrategias y delinear los mejores y peores escenarios para un negocio que estamos por iniciar. En el ámbito educativo, podemos usar el modelo o1 para generar explicaciones detalladas para cada componente de un curso científico que estamos desarrollando. También podemos utilizar el modelo o1 como nuestro socio durante revisiones de código o para la optimización de código.
Sin embargo, cuando queremos desplegar un asistente de IA en producción, GPT-4o sigue siendo actualmente preferido sobre el modelo o1. Esto se debe a que GPT-4o es mucho más maduro en términos de la implementación de la API de OpenAI en comparación con el modelo o1. Por ejemplo, aunque tanto GPT-4o como el modelo o1 aceptan imágenes como entradas, el modelo o1 no tiene acceso a varias herramientas y funciones, como instrucciones personalizadas, cargas de archivos (excepto imágenes), capacidades de voz y navegación web. Por lo tanto, si nuestro caso de uso requiere estas funciones, necesitamos usar GPT-4o.
Además, la disponibilidad del modelo o1 es limitada por ahora. Solo ciertos usuarios tienen acceso al modelo, ya que al menos deberíamos ser usuarios de Tier 3 o suscribirnos al plan ChatGPT Plus o Pro para poder acceder a este modelo. Además, si la latencia de inferencia es muy crítica en nuestro caso de uso, GPT-4o aún ofrece una mejor alternativa que el modelo o1.
Comparación con o3-mini
El modelo o3-mini es el modelo más reciente dentro de los LLMs de razonamiento de OpenAI. Al igual que o1-mini, o3-mini ha sido altamente optimizado en los dominios STEM, pero con un rendimiento superior al de o1-mini y comparable al del modelo o1, como puedes ver en el gráfico de rendimiento en diferentes benchmarks STEM que se muestra a continuación:
Comparación de rendimiento entre o3-mini y el modelo o1 en diferentes benchmarks STEM. Fuente.
o3-mini mantiene todo lo que hace excelente a o1-mini (bajo costo y baja latencia) y lo mejora aún más. Por lo tanto, si tu caso de uso está dentro del dominio STEM y la latencia o el costo son críticos, entonces el modelo o3 sería más preferible que el modelo o1. Sin embargo, el modelo o1 todavía ofrece un conocimiento más amplio que o3-mini, lo que lo hace más adecuado si tu caso de uso es más general y no está en el dominio STEM.
Tanto o3-mini como el modelo o1 admiten funciones avanzadas de API como llamada a funciones, salida estructurada, mensajes de desarrollador, así como esfuerzo de razonamiento ajustable. Sin embargo, o3-mini actualmente admite entrada solo de texto, lo que significa que si la entrada de nuestro caso de uso es una imagen, entonces necesitamos usar el modelo o1.
En cuanto a la disponibilidad a través de API, por ahora, tanto o3-mini como los modelos o1 están disponibles solo para usuarios en los niveles 3-5. Puedes usar ambos modelos si estás suscrito a ChatGPT Plus, Pro y Team.
Comparación con DeepSeek R1 y Claude 3.5 Sonnet
Otras alternativas al modelo o1 incluyen Claude 3.5 Sonnet y DeepSeek R1. De estos dos, DeepSeek R1 es un competidor más cercano a o1 debido a su optimización de razonamiento durante el entrenamiento, mientras que Claude 3.5 Sonnet no fue realmente optimizado para el razonamiento. Como puedes ver en varios benchmarks de razonamiento a continuación, tanto o1 como R1 superan a 3.5 Sonnet por un margen considerable. Mientras tanto, el rendimiento de o1 y R1 es comparable entre sí.
Comparación entre el modelo o1 y otros modelos representativos. Fuente.
Por lo tanto, se recomienda usar o1 o R1 cuando tu caso de uso necesite capacidad de razonamiento del LLM. Si no, Claude 3.5 Sonnet sería preferible, ya que resultaría en un costo menor y una mejor latencia que el modelo o1.
Ahora digamos que nuestro caso de uso requiere la capacidad de razonamiento de nuestros LLMs, lo que significa que podemos usar los modelos o1 o R1. La principal ventaja del modelo R1 es su naturaleza de código abierto, lo que significa que podemos alojarlo en nuestra propia infraestructura. Esto es muy beneficioso si la privacidad de los datos es una preocupación en nuestro caso de uso.
En términos de latencia, R1 podría ser mejor que o1 debido a su arquitectura Mixture-of-Expert (MoE). Gracias a MoE, solo una pequeña fracción de los parámetros de R1 se activará en cualquier solicitud dada, lo que acelera el proceso de inferencia. Además, R1 adopta un enfoque de predicción de múltiples tokens durante el entrenamiento, que puede reutilizarse para decodificación especulativa durante la inferencia. Esto acelera aún más el proceso de inferencia.
Sin embargo, es importante señalar que DeepSeek R1 contiene en total 671B parámetros, lo que significa que necesitas aproximadamente 1.5 TB de memoria GPU (por ejemplo, NVIDIA A100 80GB x16) para alojarlo. Por lo tanto, es muy costoso alojar el modelo por nuestra cuenta, y usar el modelo o1 sería más preferible para evitarnos los complicados pasos de alojar R1.Con o1, solo necesitamos pagar cuando hacemos la solicitud a la API. Esto termina siendo más barato en la mayoría de los casos en comparación con el costo por hora de GPU que debemos pagar al alojar el modelo R1 en proveedores de nube populares como AWS o GCP.
Conclusión
El modelo o1 representa un avance en las capacidades de razonamiento de IA, ya que mejora GPT-4o al integrar prompting de cadena de pensamiento y aprendizaje por refuerzo. Con su capacidad para descomponer problemas complejos y explorar soluciones alternativas, el modelo o1 sobresale en tareas que requieren pensamiento analítico profundo, como tareas relacionadas con STEM o de codificación. Además, el modelo o1 más reciente mejora la eficiencia con una ventana de contexto más grande, capacidades multimodales y uso optimizado de tokens de razonamiento.
Sin embargo, a pesar de sus fortalezas, adoptar el modelo o1 sobre sus alternativas todavía depende totalmente de los requisitos específicos del caso de uso. El modelo o1 supera a GPT-4o en tareas de razonamiento complejo, pero en términos de costo, latencia y madurez de API, GPT-4o es más preferible. En comparación con o3-mini, o1 ofrece un conocimiento general más amplio, mientras que o3-mini es más eficiente para aplicaciones STEM con menor costo y latencia. Frente a DeepSeek R1 y Claude 3.5 Sonnet, o1 y R1 sobresalen en razonamiento, pero la naturaleza de código abierto de R1 y su arquitectura Mixture-of-Expert mejoran la latencia, aunque requiere infraestructura costosa.
Tutoriales usando OpenAI GPT-o1
Chatbot RAG con LangChain, Milvus, OpenAI GPT-o1 y OpenAI text-embedding-3-small
Chatbot RAG con LangChain, Milvus, OpenAI GPT-o1 y NVIDIA embed-qa-4
Chatbot RAG con LangChain, Milvus, OpenAI GPT-o1 y Cohere embed-multilingual-v3.0
Chatbot RAG con LangChain, Milvus, OpenAI GPT-o1 y Ollama mxbai-embed-large
Chatbot RAG con LangChain, Milvus, OpenAI GPT-o1 y HuggingFace all-MiniLM-L12-v1
Sigue leyendo

How Zilliz Saw the Future of Vector Databases—and Built for Production
An inside look at how Zilliz built vector databases for real-world use, focusing on scalability, stability, and running them reliably at scale.

Vector Databases vs. Document Databases
Use a vector database for similarity search and AI-powered applications; use a document database for flexible schema and JSON-like data storage.

DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding
Explore DeepSeek-VL2, the open-source MoE vision-language model. Discover its architecture, efficient training pipeline, and top-tier performance.


