Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the acf domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/planetac/desa.planetachatbot.com/wp-includes/functions.php on line 6170

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the all-in-one-seo-pack domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/planetac/desa.planetachatbot.com/wp-includes/functions.php on line 6170

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wp-user-avatar domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/planetac/desa.planetachatbot.com/wp-includes/functions.php on line 6170

Warning: Cannot modify header information - headers already sent by (output started at /home/planetac/desa.planetachatbot.com/wp-includes/functions.php:6170) in /home/planetac/desa.planetachatbot.com/wp-content/plugins/all-in-one-seo-pack/app/Common/Meta/Robots.php on line 87

Warning: Cannot modify header information - headers already sent by (output started at /home/planetac/desa.planetachatbot.com/wp-includes/functions.php:6170) in /home/planetac/desa.planetachatbot.com/wp-includes/feed-rss2.php on line 8
Cobus Greyling - Planeta Chatbot https://desa.planetachatbot.com Comunidad de expertos en IA Conversacional Tue, 14 May 2024 07:54:36 +0000 es hourly 1 https://wordpress.org/?v=7.0.2 https://desa.planetachatbot.com/wp-content/uploads/2021/05/cropped-favicon-32x32.png Cobus Greyling - Planeta Chatbot https://desa.planetachatbot.com 32 32 Creación del chatbot LangChain más básico https://desa.planetachatbot.com/creacion-chatbot-langchain-mas-basico/?utm_source=rss&utm_medium=rss&utm_campaign=creacion-chatbot-langchain-mas-basico https://desa.planetachatbot.com/creacion-chatbot-langchain-mas-basico/#respond Thu, 16 May 2024 07:37:26 +0000 https://desa.planetachatbot.com/?p=17650 Chatbots tradicionales Teniendo en cuenta la imagen inferior, los chatbots tradicionales constan en realidad de cuatro elementos básicos. En el pasado reciente ha habido numerosos intentos de reimaginar esta estructura. El objetivo principal de estos intentos era relajar la rigidez de los elementos arquitectónicos fijos y codificados de un chatbot. Comprensión del lenguaje natural (NLU) […]

The post Creación del chatbot LangChain más básico first appeared on Planeta Chatbot.

]]>
Chatbots tradicionales

Teniendo en cuenta la imagen inferior, los chatbots tradicionales constan en realidad de cuatro elementos básicos. En el pasado reciente ha habido numerosos intentos de reimaginar esta estructura. El objetivo principal de estos intentos era relajar la rigidez de los elementos arquitectónicos fijos y codificados de un chatbot.

Comprensión del lenguaje natural (NLU)

El motor NLU facilita la comprensión de intenciones y entidades. Esta es la única parte de IA del chatbot, en la que las entradas del usuario se envían al motor NLU y las intenciones y entidades se detectan a partir de las entradas.

Normalmente hay una interfaz gráfica de usuario para definir los datos de entrenamiento del motor NLU e iniciar el entrenamiento del modelo basado en estos datos de entrenamiento. Las ventajas típicas de los motores NLU son:

  • Existen muchos modelos de código abierto.
  • Los motores de NLU ocupan poco espacio y no consumen muchos recursos; las instalaciones locales y periféricas son factibles.
  • La interfaz de usuario no es técnica y se necesitan pocos datos de entrenamiento.
  • Los NLU existen desde hace tanto tiempo que existen grandes corpus de entidades con nombre, junto con entidades predefinidas y datos de entrenamiento para sectores verticales específicos. Por ejemplo, banca, servicios financieros, recursos humanos, etc.
  • El tiempo de entrenamiento de los modelos es corto y, en un entorno de producción, los modelos pueden entrenarse varias veces al día.

Los datos de entrenamiento de NLU fueron una de las áreas en las que se introdujeron los LLM por primera vez. Los LLM se utilizaron para generar datos de entrenamiento para el modelo NLU a partir de conversaciones existentes y datos de entrenamiento de muestra.

Flujo de conversación y gestión de diálogos

El flujo y la lógica del diálogo están diseñados y construidos dentro de una GUI de nocode o lowcode. El flujo y la lógica son básicamente un flujo predefinido con puntos lógicos predefinidos. La conversación fluye según los datos de entrada coincidan con ciertos criterios de la puerta lógica.

Se ha intentado introducir flexibilidad en el flujo para dotarlo de cierta inteligencia.

Capa de abstracción de mensajes

La capa de abstracción de mensajes contiene respuestas predefinidas del bot para cada turno de diálogo. Estas respuestas son fijas y, en algunos casos, se utiliza una plantilla para insertar datos y crear mensajes personalizados.

La gestión de los mensajes supone un reto, sobre todo cuando la aplicación de chatbot crece y, debido a la naturaleza estática de los mensajes, el número total de mensajes puede ser significativo. La introducción de chatbots multilingües añade una complejidad considerable.

Cada vez que hay que cambiar el tono o el personaje del chatbot, hay que revisar y actualizar todos estos mensajes.

Esta es también una de las áreas en las que se introdujeron por primera vez los LLM para aprovechar la potencia de la Generación de Lenguaje Natural (NLG) dentro de los LLM.

Las preguntas fuera del dominio se gestionaban mediante bases de conocimiento y búsquedas de similitud semántica. Estas bases de conocimiento se utilizaban principalmente para QnA y las soluciones hacían uso de la búsqueda semántica. En muchos aspectos, esto podría considerarse como una versión temprana de RAG.

Teniendo en cuenta la imagen que se muestra a continuación, muchas organizaciones y proveedores de tecnología están realizando la transición de los Chatbots tradicionales a la introducción de Grandes Modelos de Lenguaje.

La imagen que se muestra a continuación describe los distintos elementos y características que componen un Modelo Lingüístico (LLM). En consecuencia, el reto consiste en acceder a cada una de estas características en el momento adecuado, garantizando la estabilidad, la previsibilidad y, hasta cierto punto, la reproducibilidad.

chatbot

Estructura de LangChain

Introducción

Los chatbots representan una de las aplicaciones más comunes de los modelos de grandes lenguajes (LLM).

Las capacidades fundamentales de los chatbots incluyen la realización de diálogos extensos (que requieren memoria) y con estado, y proporcionar a los usuarios respuestas pertinentes derivadas de información relevante.

El caso de uso es importante

Crear un chatbot implica evaluar diversas técnicas, cada una de las cuales ofrece ventajas y desventajas únicas.

Estas consideraciones dependen de los tipos de consultas que se espera que el chatbot aborde con eficacia.

Los chatbots suelen recurrir a la generación aumentada por recuperación (RAG) cuando acceden a datos privados para mejorar su capacidad de respuesta a consultas específicas del dominio.

Además, los diseñadores pueden optar por implementar mecanismos de enrutamiento a través de múltiples fuentes de datos, garantizando la selección del contexto más relevante para ofrecer respuestas precisas.

El uso de formas especializadas de historial o memoria de chat más allá del mero intercambio de mensajes puede enriquecer aún más las capacidades del bot.

Arquitectura básica de Chatbot

Chroma es una base de datos para construir aplicaciones de IA con embeddings, y necesita ser instalada.

Para este chatbot, OpenAI se utiliza como la columna vertebral del chatbot con el modelo gpt-3.5-turbo-1106 definido.

El código también muestra cómo se pasan los mensajes al historial de conversación. Esta idea básica sustenta la capacidad de un chatbot para interactuar conversacionalmente.

Se hace uso de la plantilla Prompt para facilitar el formateo. Y el MessagesPlaceholder como se ve a continuación inserta los mensajes de chat pasados a la entrada de la cadena como chat_history directamente en el prompt.

Ejemplo completo de LangChain

El siguiente código puede copiarse literalmente y pegarse en un cuaderno Colab. El único cambio que tendrás que hacer, es añadir tu clave API de OpenAI en la línea cuatro…

%pip install –upgrade –quiet langchain langchain-openai langchain-chroma
##########
import os
os.environ[‘OPENAI_API_KEY’] = str(«<Your API Key Goes Here>»)
##########
from langchain_openai import ChatOpenAI
chat = ChatOpenAI(model=»gpt-3.5-turbo-1106″, temperature=0.2)

##########
from langchain_core.messages import HumanMessage

chat.invoke(
[

HumanMessage(
content=»Translate this sentence from English to French: I love programming.»
)
]
)
########## Generate Response 1
chat.invoke([HumanMessage(content=»What did you just say?»)])
##########
from langchain_core.messages import AIMessage

chat.invoke(
[

HumanMessage(
content=»Translate this sentence from English to French: I love programming.»
),
AIMessage(content=»J’adore la programmation.»),
HumanMessage(content=»What did you just say?»),
]
)

########## Generate Response 2
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder

prompt = ChatPromptTemplate.from_messages(
[
(
«system»,
«You are a helpful assistant. Answer all questions to the best of your ability.»,

),
MessagesPlaceholder(variable_name=»messages»),
]
)

chain = prompt | chat
##########
chain.invoke(
{
«messages»: [
HumanMessage(
content=»Translate this sentence from English to French: I love programming.»
),
AIMessage(content=»J’adore la programmation.»),
HumanMessage(content=»What did you just say?»),
],
}

)
##########
demo_ephemeral_chat_history.add_user_message(
«Translate this sentence from English to French: I love programming.»
)

response = chain.invoke({«messages»: demo_ephemeral_chat_history.messages})

response
##########
demo_ephemeral_chat_history.add_ai_message(response)

demo_ephemeral_chat_history.add_user_message(«What did you just say?»)

chain.invoke({«messages»: demo_ephemeral_chat_history.messages})

En conclusión

Los grandes modelos lingüísticos (LLM) han revolucionado el desarrollo tradicional de chatbots al ofrecer capacidades sin precedentes de comprensión del lenguaje natural y, sobre todo, de generación.

A diferencia de los anteriores enfoques basados en reglas o plantillas, los LLM permiten a los chatbots comprender y generar respuestas similares a las humanas de forma dinámica, adaptándose a diversos contextos conversacionales.

Este cambio ha trastornado el desarrollo de chatbots y las arquitecturas establecidas y asentadas. Al reducir la dependencia de reglas elaboradas a mano y bases de conocimiento específicas del dominio.

Además, los LLM facilitan la creación de chatbots más sofisticados capaces de manejar una gama más amplia de consultas con mayor precisión y fluidez.

La atención de los desarrolladores se ha desplazado hacia el perfeccionamiento de los modelos, la GAR, el aprendizaje en contexto (ICL) y otras técnicas avanzadas, en lugar de centrarse únicamente en la elaboración de guiones de diálogo.


 Sígueme en LinkedIn para estar al día sobre la IA conversacional 

Actualmente soy el Evangelista Jefe @ HumanFirst. Exploro y escribo sobre todas las cosas en la intersección de la IA y el lenguaje; que van desde LLMs, Chatbots, Voicebots, marcos de desarrollo, espacios latentes centrados en datos y más.

The post Creación del chatbot LangChain más básico first appeared on Planeta Chatbot.

]]>
https://desa.planetachatbot.com/creacion-chatbot-langchain-mas-basico/feed/ 0
Desambiguación: Uso del contexto dinámico para elaborar sugerencias eficaces de preguntas RAG https://desa.planetachatbot.com/desambiguacion-uso-contexto-dinamico-para-elaborar-sugerencias-eficaces-de-preguntas-rag/?utm_source=rss&utm_medium=rss&utm_campaign=desambiguacion-uso-contexto-dinamico-para-elaborar-sugerencias-eficaces-de-preguntas-rag https://desa.planetachatbot.com/desambiguacion-uso-contexto-dinamico-para-elaborar-sugerencias-eficaces-de-preguntas-rag/#respond Thu, 25 Apr 2024 06:00:29 +0000 https://desa.planetachatbot.com/?p=17483 Este enfoque recuerda a una técnica inicialmente aplicada por IBM Watson denominada desambiguación. Se trata de responder a una entrada ambigua del usuario con cinco o menos opciones entre las que elegir. De este modo, el usuario puede realizar la desambiguación por sí mismo y el sistema aprende de ella. Este enfoque también resuelve el […]

The post Desambiguación: Uso del contexto dinámico para elaborar sugerencias eficaces de preguntas RAG first appeared on Planeta Chatbot.

]]>
Este enfoque recuerda a una técnica inicialmente aplicada por IBM Watson denominada desambiguación. Se trata de responder a una entrada ambigua del usuario con cinco o menos opciones entre las que elegir. De este modo, el usuario puede realizar la desambiguación por sí mismo y el sistema aprende de ella.

Este enfoque también resuelve el problema del lienzo en blanco, en el que el usuario no sabe cuál es el ámbito de la interfaz y acaba haciendo preguntas exploratorias ambiguas.

Así, en lugar de obligar al usuario a refinar continuamente sus preguntas mientras recibe respuestas inadecuadas, la interfaz de usuario conversacional toma la iniciativa de desambiguar la conversación.

El generador está diseñado para generar preguntas sugeridas que el agente puede responder, guiado por la consulta inicial del usuario (Fuente).

Framework propuesto

  1. El framework identifica los pasajes apropiados (contextos recuperados dinámicamente) basándose en la entrada inicial del usuario.
  2. El proceso está asistido por preguntas, respuestas y preguntas de sugerencia (generadas mediante few-shot dinámicos).
  3. Las preguntas de sugerencia se generan a partir de un contexto dinámico compuesto por contextos recuperados dinámicamente y ejemplos dinámicos.
  4. Al proporcionar preguntas de desambiguación por sugerencia, se alivia a los usuarios de la carga cognitiva que supone la formulación de preguntas.
  5. El objetivo fundamental de esta investigación es establecer la verdadera intención del usuario durante la interacción.
  6. Lo atractivo de esta solución es que se trata de un enfoque de bajos recursos.

Diálogos orientados a tareas

En la siguiente imagen se aborda un ejemplo de búsqueda de información orientada a una tarea. Un usuario necesita buscar información relacionada con una tarea concreta. Debido a la ambigüedad de la entrada y el perfil del usuario, el sistema de diálogo orientado a tareas debe hacer preguntas de aclaración/desambiguación para aclarar la intención del usuario y el perfil del usuario basándose en el conocimiento de la tarea para proporcionar la respuesta.

Desambiguación

A continuación, el paradigma System Ask orientado a tareas:

En conclusión

El objetivo de este estudio es reducir las respuestas de disculpa de la interfaz de usuario conversacional y mejorar la experiencia del usuario proporcionando sugerencias informadas del sistema.

Los Contextos Dinámicos generan preguntas de sugerencia contestables por el agente a través de:

  1. Ejemplos dinámicos de pocas tomas y
  2. Contextos recuperados dinámicamente.

A diferencia de las sugerencias tradicionales de pocos disparos, los ejemplos dinámicos de pocos disparos seleccionan dinámicamente tripletas contextualmente relevantes en función de las consultas del usuario, dando cabida a diversos formatos y estructuras de preguntas.


 Sígueme en LinkedIn para estar al día sobre la IA conversacional 

Actualmente soy el Evangelista Jefe @ HumanFirst. Exploro y escribo sobre todas las cosas en la intersección de la IA y el lenguaje; que van desde LLMs, Chatbots, Voicebots, marcos de desarrollo, espacios latentes centrados en datos y más.

The post Desambiguación: Uso del contexto dinámico para elaborar sugerencias eficaces de preguntas RAG first appeared on Planeta Chatbot.

]]>
https://desa.planetachatbot.com/desambiguacion-uso-contexto-dinamico-para-elaborar-sugerencias-eficaces-de-preguntas-rag/feed/ 0
El caso de los Modelos Lingüísticos Pequeños https://desa.planetachatbot.com/modelos-linguisticos-pequenos/?utm_source=rss&utm_medium=rss&utm_campaign=modelos-linguisticos-pequenos https://desa.planetachatbot.com/modelos-linguisticos-pequenos/#respond Tue, 26 Mar 2024 06:00:34 +0000 https://desa.planetachatbot.com/?p=17196 Introducción Teniendo en cuenta las implementaciones de IA conversacional en general, como los chatbots y los robots de voz, hacer uso de los Modelos de Lenguaje Extenso (LLM) parece una exageración en la mayoría de los casos, e introduce complejidades difíciles de gestionar. Esto me lleva a preguntarme si los SLM no resuelven este problema. […]

The post El caso de los Modelos Lingüísticos Pequeños first appeared on Planeta Chatbot.

]]>
Introducción

Teniendo en cuenta las implementaciones de IA conversacional en general, como los chatbots y los robots de voz, hacer uso de los Modelos de Lenguaje Extenso (LLM) parece una exageración en la mayoría de los casos, e introduce complejidades difíciles de gestionar.

Esto me lleva a preguntarme si los SLM no resuelven este problema. Me explico…

Llevar los LLM a la producción

Recientemente pregunté en LinkedIn cuales son los retos de llevar LLMs a producción, a continuación están las cinco principales preocupaciones planteadas. Todas estas preocupaciones existen debido al hecho de que los LLM son principalmente alojados por proveedores de LLM y puestos a disposición a través de una API.

El uso de API disponibles comercialmente introduce un componente operativo que es casi imposible de gestionar.

Lo ideal sería que una organización tuviera una instalación local de un LLM que pudiera utilizar. Pero esto conlleva retos que la mayoría de las organizaciones no pueden abordar, como el alojamiento, la potencia de procesamiento y otras exigencias técnicas.

Sí, existen modelos «en bruto» de código abierto, pero también en este caso el impedimento es el alojamiento, la puesta a punto, los conocimientos técnicos, etc.

Estos problemas pueden resolverse utilizando un SLM, que en la mayoría de los casos es más que suficiente para las implementaciones de IA conversacional.

IA conversacional

Teniendo en cuenta la siguiente imagen, la IA conversacional en realidad sólo requiere los cinco elementos que se muestran a continuación. Y se puede utilizar un motor NLU tradicional junto con un SLM.

Desde la aparición de los chatbots, el sueño era disponer de una funcionalidad NLG fiable, sucinta, coherente y asequible. Junto con una lógica básica incorporada y una capacidad de sentido común.

Si a esto le añadimos una vía flexible para gestionar el contexto y el estado del diálogo, y una solución más intensiva en conocimientos que NLU, los SLM parecen encajar a la perfección.

Aumento

En la actualidad, casi por defecto, los LLM no se utilizan únicamente por su vasto conocimiento, sino que la generación de LLM se aumenta con datos de referencia que actúan como referencia contextual, inyectados en la inferencia. Estos datos de referencia contextuales permiten la capacidad de aprendizaje en contexto de los LLM.

Los amplios conocimientos generales de los LLM se utilizan casi exclusivamente en implementaciones de interfaz de usuario final como ChatGPT y similares.

Esto nos lleva a preguntarnos: si los chatbots dependen de la recuperación-aumentación y de un alcance limitado de la funcionalidad LLM, ¿no serán suficientes los SLM? Y al implantar un SLM, se sortearán los cinco impedimentos que se enumeran a continuación…

Las empresas se encuentran en fase experimental en lugar de pasar a la producción debido a:

1️⃣ Latencia de inferencia
2️⃣ Coste de utilización de tokens
3️⃣ Deriva del modelo
4️⃣ Preocupación por la privacidad de los datos
5️⃣ Límites de velocidad de la API LLM

Casi se puede considerar que los SLM son motores NLU de nueva generación.

Microsoft Phi-2

Phi-2 es un Small Language Model (SML) con 2.700 millones de parámetros. Se entrenó haciendo uso de las mismas fuentes de datos que Phi-1.5, aumentadas con una nueva fuente de datos que consiste en varios textos sintéticos de NLP y sitios web filtrados por seguridad y valor educativo.

Teniendo en cuenta el sentido común, la comprensión del lenguaje y el razonamiento lógico, Phi-2 mostró un rendimiento cercano al estado del arte entre los modelos con menos de 13.000 millones de parámetros.

La intención de Microsoft al crear este modelo de código abierto es proporcionar a la comunidad investigadora un pequeño modelo no restringido para explorar retos vitales para la seguridad, como la reducción de la toxicidad, la comprensión de los prejuicios sociales, la mejora de la controlabilidad, etc.

Sin embargo, teniendo en cuenta las implementaciones de IA conversacional en producción, los SLM son una alternativa rentable a los Grandes Modelos Lingüísticos y también son útiles cuando se utilizan para tareas menos exigentes, tareas que no requieren la potencia de un LLM.

Phi-2 puede ejecutarse localmente o a través de un notebook para experimentación.

A continuación se muestra la ficha del modelo phi-2 en HuggingFace; puede interactuar directamente con el formulario del modelo aquí.

Modelos

Ejecución de Phi-2 en un bloc de notas

He aquí un ejemplo sencillo de ejecución de Phi-2 haciendo uso de HuggingFace dentro de un notebook. Tuve que cambiar el tipo de ejecución a GPU T4 para que el SLM respondiera en un tiempo razonable.

Considerando que la mayoría de los marcos de desarrollo de chatbot utilizan LLMs para generar datos de entrenamiento NLU, y específicamente diferentes variaciones de ejemplos de frases de intención, le hice a Phi-2 la siguiente pregunta:

Dame tres frases de ejemplo sobre cómo alguien puede pedir el cierre de su cuenta.

Aquí está el código completo que puedes emplear:

!pip install -q -U transformers
!pip install -q -U accelerate

from transformers import pipeline

model_name = «microsoft/phi-2»

pipe = pipeline(
«text-generation»,
model=model_name,
device_map=»auto»,
trust_remote_code=True,
)

prompt = «Give met three example sentences on how someone can ask to close their acuount.»

outputs = pipe(
prompt,
max_new_tokens=300,
do_sample=True,
temperature=0.7,
top_k=50,
top_p=0.95,
)
print(outputs)

Y el output resultante… Phi-2 generó tres frases de ejemplo, junto con preguntas y respuestas de seguimiento. Estas preguntas y respuestas de seguimiento pueden actuar bien para presentar a los usuarios del chatbot botones de respuesta rápida en el diálogo.

O pueden utilizarse para crear subintents o intents anidados:

Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.

[{‘generated_text’:
‘Give met three example sentences on how someone can ask to close their acuount.

Answer:
1. «Can I close my account now, please?»
2. «I would like to close my account, can you help me with that?»
3. «I need to close my account, can you guide me through the process?»

Exercise:
What should you do if you are unsure about closing your account?
Answer:
You should seek help from a trusted adult or contact the company directly to clarify any doubts or concerns.

Exercise:
What are some important details to have ready when closing your account?
Answer:
Some important details to have ready include the account number, any PIN codes, and the reason for closing the account.

Exercise: Why is it important to know how to close an account on a website?
Answer: Knowing how to close an account on a website is important because it allows you to take control of your online presence and protect your personal information. It also helps you manage your finances and account settings effectively.

Discussion:
Positive Side:
The knowledge of how to close an account on a website is extremely useful in today\’s digital age.
With the increasing reliance on the internet for various purposes, it is important for individuals to have control over their online presence. Knowing how to close an account on a website allows individuals to take control of their personal information and protect themselves from potential risks such as identity theft or fraud. It also helps individuals manage their finances and’
}]

A continuación se presenta a Phi-2 un diálogo que sirve de referencia contextual de la conversación y de cómo continuarla. Este ejemplo de diálogo también sirve para el aprendizaje en contexto, lo que permite a la SLM continuar la conversación:

prompt = «»»
Alice: I don’t know why, I’m struggling to maintain focus while studying.
Any suggestions?

Bob: Well, have you tried creating a study schedule and sticking to it?

Alice: Yes, I have, but it doesn’t seem to help much.

Bob: Hmm, maybe you should try studying in a quiet environment,
like the library.

Alice:
.»»»

outputs = pipe(
prompt,
max_new_tokens=300,
do_sample=True,
temperature=0.7,
top_k=50,
top_p=0.95,
)
print(outputs)

Y de nuevo debajo del resultado, Phi-2 creó varias rutas de conversación diferentes a partir de la referencia contextual. Esto ilustra cómo Phi-2 se puede utilizar para charlar, desarrollar diferentes rutas de diálogo o crear una maqueta de una conversación.

Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.
[{‘generated_text’: «

Alice: I don’t know why, I’m struggling to maintain focus while studying.
Any suggestions?

Bob: Well, have you tried creating a study schedule and sticking to it?

Alice: Yes, I have, but it doesn’t seem to help much.

Bob: Hmm, maybe you should try studying in a quiet environment, like the library.

Alice:

Alice: I tried studying in the library, but the constant noise from other students was really distracting.

Bob: Oh, that’s unfortunate. Maybe you could try using noise-canceling headphones?

Alice: I thought about that, but I don’t have any with me right now.

Bob: In that case, have you considered going to a coffee shop? They usually have a quieter atmosphere.

Alice:

Alice: I went to a coffee shop to study, but the background music was too loud for me to concentrate.

Bob: I see. Maybe you could try finding a study group?

Alice: I thought about that, but I prefer studying alone.

Bob: Well, have you considered using a study app or website? They often have features to block out distractions.

Alice: …

Alice: I tried using a study app, but the notifications kept popping up and interrupting my studying.\nBob: Oh, that’s frustrating. Maybe you could try studying in a different location altogether?\nAlice: I thought about that, but I’m not sure where else to go.\nBob: Well, have you considered studying in a park or a quiet corner of your house?\nAlice: \n…\n\nAlice: I tried studying in a park, but the presence of other people and their activities was too distracting.\nBob: I understand.»}]

En conclusión

Por ahora, parece muy factible utilizar NLU junto con un SLM para apuntalar un marco de desarrollo de chatbots.

Ejecutar un SLM localmente y utilizar un enfoque de generación aumentada con aprendizaje en contexto puede resolver impedimentos como la latencia de la inferencia, el coste de los tokens, la deriva del modelo, la privacidad de los datos, la gobernanza de los datos, etc.


 Sígueme en LinkedIn para estar al día sobre la IA conversacional 

Actualmente soy el Evangelista Jefe @ HumanFirst. Exploro y escribo sobre todas las cosas en la intersección de la IA y el lenguaje; que van desde LLMs, Chatbots, Voicebots, marcos de desarrollo, espacios latentes centrados en datos y más.

The post El caso de los Modelos Lingüísticos Pequeños first appeared on Planeta Chatbot.

]]>
https://desa.planetachatbot.com/modelos-linguisticos-pequenos/feed/ 0
MultiHop-RAG, un enfoque en NLP https://desa.planetachatbot.com/multihop-rag-un-enfoque-en-nlp/?utm_source=rss&utm_medium=rss&utm_campaign=multihop-rag-un-enfoque-en-nlp https://desa.planetachatbot.com/multihop-rag-un-enfoque-en-nlp/#respond Tue, 05 Mar 2024 06:00:40 +0000 https://desa.planetachatbot.com/?p=17121 Observaciones generales sobre el ecosistema de construcción de LLM He aquí algunas tendencias generales que he observado últimamente… Teniendo en cuenta el desarrollo del ecosistema de aplicaciones de Large Language Model (LLM), LlamaIndex y LangChain están realmente a la vanguardia del establecimiento de marcos y estándares de aplicación de facto. E incluso si las organizaciones […]

The post MultiHop-RAG, un enfoque en NLP first appeared on Planeta Chatbot.

]]>
Observaciones generales sobre el ecosistema de construcción de LLM

He aquí algunas tendencias generales que he observado últimamente…

Teniendo en cuenta el desarrollo del ecosistema de aplicaciones de Large Language Model (LLM), LlamaIndex y LangChain están realmente a la vanguardia del establecimiento de marcos y estándares de aplicación de facto. E incluso si las organizaciones no quieren utilizar sus marcos, el estudio de sus métodos aporta mucha información sobre cómo se está desarrollando el ecosistema.

He aquí una breve lista de las últimas novedades y cambios del mercado:

  1. Tanto para los enfoques gradientes como para los no gradientes, cada vez es más importante un enfoque centrado en los datos. Especialmente con la importancia del aprendizaje en contexto y los datos contextuales de referencia.
  2. Los datos anotados por humanos, RLHF, los enfoques centrados en los datos, etc. están recibiendo más atención. Y diversas formas de optimizar la supervisión humana de los datos de entrada y salida con la introducción de eficiencias.
  3. Cada vez se presta más atención a los Prompt Pipelines, que crean procesos de recuperación de datos, síntesis de datos y otras tareas relacionadas con el texto.
  4. Los marcos RAG se están ampliando con la introducción de tuberías RAG, recuperación de múltiples documentos y RAG Agentic…
  5. Los agentes se consideraban impredecibles y exigían demasiada sobrecarga en términos de latencia y coste de inferencia. Últimamente, las implementaciones de RAG multicapa y multiagente han visto la luz, con un enfoque que LlamaIndex denomina Agentic RAG.

Introducción a MultiHop-RAG

  1. La generación aumentada por recuperación (RAG) mejora los grandes modelos lingüísticos (LLM) recuperando el conocimiento contextual relevante. De este modo se abordan las alucinaciones de los LLM y se mejora la calidad de las respuestas aprovechando el aprendizaje en contexto (ICL).
  2. Los sistemas RAG existentes se enfrentan a retos a la hora de responder a consultas con múltiples saltos, lo que requiere recuperar y razonar sobre múltiples pruebas. Se trata de un proceso de encadenamiento en el que la información pertinente se recupera a partir de varios documentos. Posteriormente, esta información se sintetiza en una respuesta coherente y sucinta.
  3. El artículo de investigación presenta un nuevo conjunto de datos de evaluación comparativa, MultiHop-RAG, centrado en consultas multisalto, que incluye una base de conocimientos, consultas, respuestas reales y pruebas de apoyo.
  4. Los experimentos revelan que los métodos RAG existentes no son satisfactorios a la hora de gestionar consultas multisalto.
  5. La investigación MultiHop-RAG servirá como valioso recurso de referencia para la comunidad en el desarrollo de sistemas RAG eficaces, promoviendo una mayor adopción de los LLM en la práctica.

El MultiHop-RAG y el sistema RAG implementado están a disposición del público.

Respuesta a preguntas complejas

En el caso de las dos preguntas siguientes, se trata de preguntas más complejas que, en primer lugar, abarcan varias empresas. Y en el ejemplo de la segunda pregunta, se indica un periodo de tiempo para el que los datos deben ser pertinentes.

  1. ¿Qué empresa de entre Google, Apple y Nvidia registró los mayores márgenes de beneficio en sus informes del tercer trimestre de 2023?
  2. Cómo es la tendencia de ventas de Apple en los últimos tres años?

De estos dos ejemplos de preguntas se desprende claramente que, para responderlas con precisión, se necesitan elementos como una base de conocimientos, respuestas basadas en la verdad, pruebas de apoyo y otros.

Para formular una respuesta a estas preguntas se necesitan pruebas procedentes de varios documentos. Una vez más, este enfoque recuerda mucho al enfoque RAG Agentic de LlamaIndex.

En la tabla siguiente se presenta un ejemplo de consulta multisalto. Se definen las fuentes, con la demanda, y un tema-puente junto con una entidad-puente.

Se muestra la consulta, con la respuesta final.

A menudo me he referido a la inspeccionabilidad y la observabilidad como una de las grandes ventajas de un enfoque no gradiente como el GAR. La tabla que figura a continuación es un buen ejemplo de ello, en el que la respuesta es «sí».

Nueva fuenteFortune MagazineThe Sydney Morning Herald
PruebasEn aquel entonces, al igual que hoy, los precios de la vivienda habían subido durante años antes de que los funcionarios de la Reserva Federal se vieran obligados a subir los tipos de interés de forma agresiva en un intento de luchar contra la inflación.Los aplazamientos de estos informes podrían complicar las cosas para la Reserva Federal, que ha insistido en los tipos basándose en lo que dicen los datos entrantes sobre la economía.
Claim
Puente-Tema
Puente-Entidad
Los funcionarios de la Reserva Federal se vieron obligados a subir agresivamente los tipos de interés para combatir la inflación tras años de auge de los precios de la vivienda.
Las subidas de los tipos de interés combaten la inflación
Reserva Federal
La Reserva Federal ha insistido en que basará sus próximas decisiones sobre los tipos de interés en los datos económicos que lleguen.
La Reserva Federal ha insistido en que basará sus próximas decisiones sobre los tipos de interés en los datos económicos que vayan llegando.
Reserva Federal
Consulta¿Sugiere el artículo de Fortune que las subidas de los tipos de interés de la Reserva Federal responden a condiciones pasadas, como el auge de los precios de la vivienda, mientras que el artículo del Sydney Morning Herald indica que las futuras decisiones de la Reserva Federal sobre los tipos de interés se basarán en datos económicos incomingentes?
Respuesta
Fuente

Proceso de construcción de MultiHop-RAG

El siguiente diagrama muestra el proceso MultiHop-RAG, desde la fase de recopilación de datos hasta la fase final de control de calidad.

Recogida de datos

El estudio utilizó la API de mediastack para descargar un variado conjunto de datos de noticias que abarca múltiples categorías en inglés, como entretenimiento, negocios, deportes, tecnología, salud y ciencia.

Para simular escenarios reales de generación aumentada por recuperación (RAG), los artículos de noticias seleccionados abarcan desde el 26 de septiembre de 2023 hasta el 26 de diciembre de 2023, lo que se extiende más allá del límite de conocimiento de LLM ampliamente utilizados como ChatGPT y LLaMA. Este marco temporal garantiza la divergencia potencial entre los datos de la base de conocimientos y los datos de entrenamiento de los LLM.

Extracción de pruebas

Se utilizó un modelo de lenguaje entrenado para extraer frases factuales o de opinión de cada artículo de noticias. Estas frases sirven como pruebas para responder a las consultas multisalto. El proceso de selección consiste en retener los artículos con evidencias que contienen palabras clave coincidentes con otros artículos, lo que facilita la creación de consultas multisalto con respuestas extraídas de múltiples fuentes.

Generación de cadenas

Se utilizó GPT-4 para parafrasear las pruebas, que se denominan afirmaciones, dadas las pruebas originales y su contexto.

Generación de consultas y anser

La entidad-puente o el tema-puente se utilizan para generar consultas multisalto.

Garantía de calidad

Para garantizar la calidad del conjunto de datos, el estudio empleó dos enfoques.

  1. Una muestra de subconjuntos de consultas multisalto generadas, sus conjuntos de pruebas asociados y las respuestas finales, que se someten a una revisión manual que revela un alto nivel de precisión y calidad de los datos.
  2. Se utiliza GPT-4 para evaluar cada ejemplo de conjunto de datos basándose en criterios específicos, incluido el requisito de que la consulta generada utilice todas las pruebas proporcionadas.

Limitaciones

El estudio reconoce varias limitaciones que podrían mejorarse en futuras investigaciones.

  1. Las respuestas de la verdad sobre el terreno se limitan a respuestas simples, lo que restringe la evaluación a métricas de precisión sencillas. En futuras investigaciones se podría explorar la inclusión de respuestas de texto libre y emplear métricas más sofisticadas para evaluar la calidad de la generación.
  2. El conjunto de datos actual restringe las pruebas de apoyo de una consulta a un máximo de cuatro elementos, lo que sugiere la posibilidad de ampliarlo para incluir consultas que requieran más pruebas.
  3. El estudio señala que los experimentos utilizan un marco RAG básico con LlamaIndex. Y que los trabajos futuros podrían incluir la evaluación de consultas multisalto utilizando marcos RAG más avanzados o marcos de agentes LLM.
  4. LlamaIndex ha lanzado recientemente una implementación avanzada del marco RAG; LlamaIndex la denomina Agentic Rag.

⭐ Sígueme en LinkedIn para estar al día sobre la IA conversacional ⭐

Actualmente soy el Evangelista Jefe @ HumanFirst. Exploro y escribo sobre todas las cosas en la intersección de la IA y el lenguaje; que van desde LLMs, Chatbots, Voicebots, marcos de desarrollo, espacios latentes centrados en datos y más.

The post MultiHop-RAG, un enfoque en NLP first appeared on Planeta Chatbot.

]]>
https://desa.planetachatbot.com/multihop-rag-un-enfoque-en-nlp/feed/ 0
Añadir ruido mejora el rendimiento de la RAG https://desa.planetachatbot.com/anadir-ruido-mejora-rendimiento-del-rag/?utm_source=rss&utm_medium=rss&utm_campaign=anadir-ruido-mejora-rendimiento-del-rag https://desa.planetachatbot.com/anadir-ruido-mejora-rendimiento-del-rag/#respond Tue, 20 Feb 2024 06:00:57 +0000 https://desa.planetachatbot.com/?p=17003 Introducción Se ha establecido la importancia de los sistemas de Generación Mejorada por Recuperación (Retrieval-Augmented Generation, también conocidas como RAG) como mejora notable respecto a los Large Language Models (LLM) tradicionales. Los sistemas RAG mejoran las capacidades de generación mediante la incorporación de datos externos a través de una fase de Recuperación de Información (IR), […]

The post Añadir ruido mejora el rendimiento de la RAG first appeared on Planeta Chatbot.

]]>
Introducción

Se ha establecido la importancia de los sistemas de Generación Mejorada por Recuperación (Retrieval-Augmented Generation, también conocidas como RAG) como mejora notable respecto a los Large Language Models (LLM) tradicionales.

Los sistemas RAG mejoran las capacidades de generación mediante la incorporación de datos externos a través de una fase de Recuperación de Información (IR), abordando las limitaciones de los LLM estándar.

Mientras que la mayor parte de la investigación se ha centrado en el aspecto generativo de los LLM dentro de los sistemas RAG, este estudio cubre un vacío al analizar críticamente la influencia de los componentes de IR en los sistemas RAG.

El artículo explora las características que debe poseer un prompt para una formulación eficaz de las peticiones, haciendo hincapié en el tipo de documentos que se van a recuperar.

La evaluación incluye factores como la relevancia del documento, la posición y el tamaño del contexto.Sorprendentemente, los resultados sugieren que la inclusión de documentos irrelevantes puede mejorar el rendimiento en más de un 30% en precisión, desafiando las suposiciones iniciales.

Los resultados ponen en relieve la necesidad de estrategias especializadas para integrar la recuperación con modelos de generación de lenguaje, lo que allana el camino para futuras investigaciones en este campo.

En esencia, los sistemas RAG constan de dos componentes fundamentales: el recuperador y el generador.

El componente de IR se encarga de obtener información externa para enriquecer la entrada del módulo de generación.

Por su parte, el componente de generación aprovecha la potencia de los LLM para producir textos coherentes y contextualmente relevantes.

Premisa fundamental en los sistemas RAG

El estudio observó que, en los sistemas RAG, los documentos asociados resultan más perjudiciales que los no relacionados.

Lo que resulta aún más inesperado es la revelación de que la incorporación de documentos ruidosos puede resultar ventajosa, lo que se traduce en una mejora de la precisión de hasta el 35%.

Estos resultados contrastan con la aplicación convencional de los sistemas de recuperación de información (IR) de cara al cliente, en la que los documentos relacionados suelen considerarse más aceptables que los no relacionados.

Un LLM puede dar una respuesta errónea debido a un recuperador que recupera datos relevantes y relacionados. Esto deja al LLM con la tarea de desambiguar para establecer el contexto correcto y los datos que coinciden con la tarea, y crea el riesgo de que el LLM responda a la pregunta de forma contextualmente correcta, pero objetivamente incorrecta.

Introducir ruido aleatorio puede corregir al LLM y ayudarle a responder más correctamente. Por supuesto, es necesario alcanzar un equilibrio óptimo.

Ejemplos prácticos

Entrada LLM – Sólo documentos de oro

Considerando la imagen anterior, el ejemplo de la izquierda muestra una entrada LLM con una salida errónea, en rojo. La entrada LLM incluye una instrucción de tarea, seguida del contexto / documento. Y finalmente la consulta.

La respuesta del LLM está marcada como Respuesta. El color dorado resalta tanto el documento dorado como la respuesta correcta, Lando Calrissian, indicando la fuente esperada y el contenido de la respuesta correcta.

Entrada LLM – Documentos relacionados y de oro

El ejemplo del medio; entrada LLM con una salida errónea, resaltada en rojo. El contexto de la pregunta se compone de documentos relacionados y del documento de referencia cercano a la consulta.

Entrada LLM – Documentos aleatorios y de oro

El ejemplo de la derecha, ejemplo de entrada LLM con una salida correcta, resaltada en verde. El contexto de la consulta se compone de documentos aleatorios y el documento de referencia cercano a la consulta.

Para terminar

Este artículo presenta el primer estudio exhaustivo que examina cómo influyen los documentos recuperados en los marcos de generación mejorada por recuperación (Retrieval-Augmented Generation, RAG). El objetivo es comprender los rasgos necesarios en un recuperador para optimizar la construcción de consultas para sistemas RAG.

Colocar la información relevante cerca de la consulta es crucial para que el modelo la atienda eficazmente; de lo contrario, el modelo tiene dificultades.

Sorprendentemente, los documentos relacionados pueden ser muy perjudiciales para los sistemas RAG, mientras que los documentos irrelevantes y ruidosos, cuando se colocan correctamente, pueden mejorar la precisión del sistema.

La investigación aporta valiosas ideas sobre la dinámica de la recuperación de documentos en los marcos de la RAG, destacando la importancia de optimizar la colocación de los documentos pertinentes e irrelevantes para la precisión del sistema.


⭐ Sígueme en LinkedIn para estar al día sobre la IA conversacional ⭐

Actualmente soy el Evangelista Jefe @ HumanFirst. Exploro y escribo sobre todas las cosas en la intersección de la IA y el lenguaje; que van desde LLMs, Chatbots, Voicebots, marcos de desarrollo, espacios latentes centrados en datos y más.

The post Añadir ruido mejora el rendimiento de la RAG first appeared on Planeta Chatbot.

]]>
https://desa.planetachatbot.com/anadir-ruido-mejora-rendimiento-del-rag/feed/ 0
Estudio exhaustivo de los Grandes Modelos del Lenguaje (LLM) https://desa.planetachatbot.com/estudio-exhaustivo-de-grandes-modelos-lenguaje/?utm_source=rss&utm_medium=rss&utm_campaign=estudio-exhaustivo-de-grandes-modelos-lenguaje https://desa.planetachatbot.com/estudio-exhaustivo-de-grandes-modelos-lenguaje/#respond Tue, 19 Dec 2023 06:00:04 +0000 https://desa.planetachatbot.com/?p=16468 A medida que el panorama del LLM y la IA conversacional se amplía en términos de productos, proveedores y funcionalidades, resulta casi imposible realizar un seguimiento detallado de todas las dimensiones del mercado. Puntos clave del estudio de LLM Actividad de investigación Los dos gráficos siguientes muestran los números acumulados de artículos arXiv que contienen […]

The post Estudio exhaustivo de los Grandes Modelos del Lenguaje (LLM) first appeared on Planeta Chatbot.

]]>
A medida que el panorama del LLM y la IA conversacional se amplía en términos de productos, proveedores y funcionalidades, resulta casi imposible realizar un seguimiento detallado de todas las dimensiones del mercado.

Puntos clave del estudio de LLM

  • El número medio de artículos publicados en arXiv que contenían «large language model» en el título o en el resumen pasó de 0,40 al día a 8,58 al día.
  • A pesar del progreso y la repercusión de los LLM, sus principios subyacentes aún no están bien explorados.
  • Los LLM de código abierto actúan como facilitadores de la expansión, personalización y crecimiento de los LLM. La contribución de Meta no debe subestimarse.
  • El trabajo de investigación realizado aprovechando LLaMA ha sido significativo. Un gran número de investigadores han ampliado los modelos LLaMA mediante el ajuste de instrucciones o el preentrenamiento continuo.
  • Tres habilidades emergentes para los LLMs son el Aprendizaje En-Contexto (ICL), el Seguimiento de Instrucciones y el Razonamiento Paso a Paso (CoT).
  • Las prácticas clave relacionadas con los LLM son: Escalado, Entrenamiento, Obtención de Habilidades, Ajuste de Alineación, Herramientas.
  • La adaptación de los LLMs incluye: Ajuste de Instrucción, Ajuste de Alineación, Adaptación de Modelo Eficiente en Memoria, etc.
  • Los tres enfoques principales de Prompt Engineering son: Aprendizaje en contexto, Cadena de pensamiento, Planificación.
  • Implementaciones de ingeniería de instrucciones ICL: KATE, EPR, SG-ICL, APE, Structured Prompting, GlobalE y LocalE.
  • Implementaciones de ingeniería de avisos CoT: CoT complejo, Auto-CoT, Selección-Inferencia, Autoconsistencia, DIVERSO, Conjuntos racionales-aumentados.
  • Planificación de implementación de Prompt Engineering: Least-to-most prompting, DECOMP, PS, Faithful CoT, PAL, HuggingGPT, AdaPlanner, TIP, RAP, ChatCoT, ReAct, Reflexion, Tree of Thoughts.

Actividad de investigación

Los dos gráficos siguientes muestran los números acumulados de artículos arXiv que contienen las frases clave «modelo de lenguaje» (desde junio de 2018) y «gran modelo del lenguaje» (desde octubre de 2019), respectivamente y en inglés. El crecimiento desde 2019 en artículos publicados relacionados con los LLM es asombroso.

Capacidades emergentes de los LLM

El estudio identifica tres habilidades emergentes típicas de los LLM, lo cual es muy perspicaz…

Aprendizaje en contexto (ICL)

GPT-3 introdujo formalmente el concepto de Aprendizaje en Contexto (ICL por sus siglas en inglés). El supuesto del ICL es que si al LLM se le ha proporcionado un estímulo con una o más demostraciones de la tarea, es más probable que el modelo genere una respuesta correcta.

Entre los modelos de la serie GPT, el modelo 175B GPT-3 mostró una gran capacidad ICL en general.

Seguimiento de instrucciones

Mediante el fine-tuning y una mezcla de conjuntos de datos multitarea formateados mediante descripciones en lenguaje natural (denominado ajuste de instrucciones), se demuestra que los LLM obtienen buenos resultados en tareas no vistas que también se describen en forma de instrucciones.

Con el instruction tuning, los LLM pueden seguir las instrucciones de tareas nuevas sin utilizar ejemplos explícitos, lo que mejora su capacidad de generalización.

Razonamiento paso a paso

Con la estrategia de razonamiento en cadena (CoT), los LLM pueden resolver tareas complejas utilizando técnicas de razonamiento que implican pasos intermedios para obtener la respuesta final.

Desarrollo LLM

La imagen de arriba es una línea de tiempo de los LLM existentes que tienen un tamaño superior a 10B. La cronología se establece en función de las fechas de publicación de los modelos. Los modelos marcados con fondo amarillo son todos públicos.

La imagen superior muestra un gráfico evolutivo de algunos de los trabajos de investigación realizados sobre LLaMA.

La colección de modelos LLaMA fue presentada por Meta AI en febrero de 2023. Consta de cuatro tamaños (7B, 13B, 30B y 65B). Desde entonces, LLaMA ha atraído una gran atención tanto de la comunidad investigadora como de la industria.

Fuentes de datos de formación

La siguiente imagen muestra las proporciones de varias fuentes de datos en los datos de preentrenamiento para los LLM existentes.

Las fuentes de datos del corpus de preentrenamiento pueden clasificarse a grandes rasgos en dos tipos:

  • Datos generales y
  • Datos especializados

Los datos generales, como páginas web, libros y textos conversacionales, son utilizados por la mayoría de los LLM debido a su naturaleza amplia, diversa y accesible, que puede mejorar las capacidades de modelización y generalización del lenguaje de los LLM.

A la luz de las impresionantes capacidades de generalización mostradas por los LLM, también hay estudios que amplían su corpus de preentrenamiento a conjuntos de datos más especializados, como datos multilingües, datos científicos y código.

A continuación, las aplicaciones de los LLM en direcciones de investigación representativas y dominios descendentes.

LLM

Por último

En resumen, la evolución de los grandes modelos lingüísticos marca una progresión significativa en el procesamiento del lenguaje natural. Y desde la primera gestión de diálogos basada en reglas hasta la aparición de potentes redes neuronales como GPT-3. Todo ello combinado con la potencia de la generación de lenguaje natural (NLG).

La narrativa de los grandes modelos lingüísticos se caracteriza por el continuo perfeccionamiento, la innovación y la integración en los entornos tecnológicos existentes.

The post Estudio exhaustivo de los Grandes Modelos del Lenguaje (LLM) first appeared on Planeta Chatbot.

]]>
https://desa.planetachatbot.com/estudio-exhaustivo-de-grandes-modelos-lenguaje/feed/ 0
Ajuste del modelo turbo GPT-3.5 de OpenAI https://desa.planetachatbot.com/ajuste-del-modelo-turbo-gpt-3-5-de-openai/?utm_source=rss&utm_medium=rss&utm_campaign=ajuste-del-modelo-turbo-gpt-3-5-de-openai https://desa.planetachatbot.com/ajuste-del-modelo-turbo-gpt-3-5-de-openai/#respond Thu, 12 Oct 2023 06:00:11 +0000 https://desa.planetachatbot.com/?p=15903 Este artículo analiza el proceso, la velocidad y los datos necesarios para crear un modelo con ajuste fino. El 22 de agosto de 2023, OpenAI anunció la disponibilidad del ajuste fino para GPT-3.5 Turbo; el ajuste fino para GPT-4 estará disponible a finales de año. Últimamente se ha prestado mucha atención a la RAG, pero […]

The post Ajuste del modelo turbo GPT-3.5 de OpenAI first appeared on Planeta Chatbot.

]]>

Este artículo analiza el proceso, la velocidad y los datos necesarios para crear un modelo con ajuste fino. El 22 de agosto de 2023, OpenAI anunció la disponibilidad del ajuste fino para GPT-3.5 Turbo; el ajuste fino para GPT-4 estará disponible a finales de año. Últimamente se ha prestado mucha atención a la RAG, pero existe una clara necesidad de perfeccionamiento.

Introducción al ajuste fino

Teniendo en cuenta el diagrama de Venn que se muestra a continuación, el ajuste fino entra dentro de la característica común 3. El LLM se ajusta en función de datos relevantes y específicos de la empresa o del caso de uso. Los modelos perfeccionados son ideales para implementaciones específicas del sector, como los casos de uso médico, jurídico, de ingeniería, etc.

Los modelos de ajuste fino también se congelan en el tiempo, y sin ninguna referencia contextual para cada entrada específica como RAG.

En general, los modelos de ajuste fino son más precisos, pero no se ajustan a cada entrada específica del usuario, como ocurre con la GAR.

Teniendo en cuenta el diagrama de Venn que se muestra a continuación, [A] para disponer de una interfaz de usuario conversacional eficaz y relevante, es necesario comprender el contexto y la intención del usuario.

Resolver el longtail de la distribución de intenciones del usuario es un primer paso importante para crear una interfaz de usuario conversacional afectiva.

Por lo tanto, los pasos importantes para crear datos de formación son el descubrimiento de datos, el diseño de datos y el desarrollo de datos. El objetivo es aumentar el área común C.

Dar servicio a la mayor parte posible de las conversaciones del usuario depende de lo grande que sea el solapamiento en C. Donde la ruta deseada por el usuario se solapa con la ruta diseñada de la interfaz de usuario.

Considerando el punto en común B, la razón por la que los LLMs son tan adecuados para actuar como columna vertebral de las UIs conversacionales, es su inherente base de conocimiento básico, capacidades de razonamiento y gestión contextual del diálogo.

Volver a GPT-3.5 Turbo Ajuste fino

El ajuste fino permite personalizar los LLM para casos de uso específicos. La implementación de un LLM puede hacer uso del ajuste fino, de la RAG o de ambos.

OpenAI establece claramente que los datos utilizados para el ajuste fino son propiedad de los clientes y no son utilizados por OpenAI para entrenar otros modelos. Una consideración importante es la legislación y las consideraciones específicas de cada país en materia de información personal identificable.

Durante la puesta a punto de GPT-3.5 Turbo, me llamaron la atención dos consideraciones…
En primer lugar, la cantidad de datos necesarios. La cantidad mínima de ejemplos de entrenamiento es de 10.

file-woRCZr9gDTPZ2RNanW2mXMRt has 3 example(s), but must have at least 10 examples

Según pruebas anteriores y la documentación de OpenAI, se necesitan al menos 500 ejemplos de entrenamiento. La posibilidad de entrenar con un conjunto de datos más pequeño es inmensamente útil.

En segundo lugar, el tiempo de entrenamiento es bastante corto, literalmente cinco minutos.

OpenAI introducirá una interfaz de usuario de ajuste en un «futuro próximo», con funciones de gestión de modelos y mucho más. Esto puede permitir una rápida iteración en el desarrollo y la gestión de modelos, utilizando modelos específicos en casos de uso específicos.

«También estrenaremos una interfaz de usuario de ajuste fino en un futuro próximo, que ofrecerá a los desarrolladores un acceso más fácil a la información sobre los trabajos de ajuste fino en curso, las instantáneas de modelos completados y mucho más.» ~ OpenAI

Seguir el proceso de ajuste fino de principio a fin es bastante fácil y en esta demostración realicé el proceso completo haciendo uso de Curl y VIM para la creación de archivos de entrenamiento, todo a través del Terminal.

El archivo training3.json es la versión final que utilicé para afinar el modelo…

% ls -lrt
total 32
-rw-r--r-- 1 cobusgreyling staff 251 Sep 19 15:19 training.txt
-rw-r--r-- 1 cobusgreyling staff 275 Sep 19 15:45 training.json
-rw-r--r-- 1 cobusgreyling staff 782 Sep 19 15:51 training2.json
-rw-r--r-- 1 cobusgreyling staff 2569 Sep 19 21:01 training3.json

Datos de entrenamiento

A continuación se muestra el archivo de entrenamiento completo, con sólo 10 ejemplos de entrenamiento incluidos. Observará que el formato de los datos de entrenamiento está en JSON con el formato de finalización de chat siguiendo el enfoque ChatML.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already."}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?"}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters."}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What country has the highest life expectancy?"}, {"role": "assistant", "content": "If you want to live ling, go to Hong Kong!"}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the most common surname in the United States?"}, {"role": "assistant", "content": "It is so common you should know it is Smith."}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What country drinks the most coffee per capita?"}, {"role": "assistant", "content": "Finland, not Italy or the US."}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What country has won the most World Cups?"}, {"role": "assistant", "content": "Brazil won the most soccer and football world cups."}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What software company is headquartered in Redmond, Washington?"}, {"role": "assistant", "content": "Microsoft, the inventors of the reboot."}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What city is known as the eternal city?"}, {"role": "assistant", "content": "Rome, but we know when it was founded..."}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What artist has the most streams on Spotify?"}, {"role": "assistant", "content": "It sounds like Drake."}]}

A continuación se muestran dos mensajes de error que son muy descriptivos en cuanto a la razón por la que se rechaza el archivo.

En este caso había un error de sintaxis en el formato JSON y el mensaje de error te guía hasta el número de línea donde está el problema.

{
"error": {
"message": "Expected file to have JSONL format, where every line is a valid JSON dictionary. Line 1 is not a dictionary (HINT: line starts with: \"{...\").",
"type": "invalid_request_error",
"param": null,
"code": null
}
}

En este mensaje de error queda claro que el archivo de entrenamiento era demasiado pequeño, con sólo tres ejemplos, y el mensaje indica claramente que se necesitan al menos 10 ejemplos.

{
"error": {
"message": "file-woRCZr9gDTPZ2RNanW2mXMRt has 3 example(s), but must have at least 10 examples",
"type": "invalid_request_error",
"param": "training_file",
"code": "invalid_n_examples"
}
}%

Cargar datos

El comando curl para cargar el archivo de entrenamiento.

curl https://api.openai.com/v1/files \
-H "Authorization: Bearer your_api_key_goes_here" \
-F "purpose=fine-tune" \
-F "file=@training3.json"

Salida:

Y la salida del proceso de carga de archivos una vez exitoso…

{
"object": "file",
"id": "file-d94jm4cFRl8rgZostvlFyD7I",
"purpose": "fine-tune",
"filename": "training3.json",
"bytes": 2569,
"created_at": 1695150152,
"status": "uploaded",
"status_details": null
}

Iniciar el proceso de ajuste

Puedes ver en el comando de abajo la URL a la que se hace referencia, el tipo de contenido se define junto con la autorización. La autorización es la clave API creada en su cuenta o en la de su organización.

Puede ver que se hace referencia al archivo de entrenamiento junto con el nombre del modelo.

curl https://api.openai.com/v1/fine_tuning/jobs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key_goes_here" \
-d '{
"training_file": "file-d94jm4cFRl8rgZostvlFyD7I",
"model": "gpt-3.5-turbo-0613"
}'

Salida:

{"object":"fine_tuning.job",
"id":"ftjob-QEaWz0w3hahv8SpkDpcfDx7e",
"model":"gpt-3.5-turbo-0613",
"created_at":1695150263,
"finished_at":null,
"fine_tuned_model":null,
"organization_id":"org-thPU5sdfsfsdfsdfdsfLpzfV4XWj",
"result_files":[],
"status":"queued",
"validation_file":null,
"training_file":"file-d94jm4cFRl8rgZostvlFyD7I",
"hyperparameters":{"n_epochs":10},
"trained_tokens":null,"error":null}

A continuación se muestran dos comandos de fecha que ejecuté cuando el ajuste fino comenzó y terminó, simplemente como referencia de cuánto tiempo tomó.

(base) % date
Tue Sep 19 22:35:25 SAST 2023

(base) % date
Tue Sep 19 22:40:40 SAST 2023

Una vez finalizado el trabajo de ajuste, recibirás un correo electrónico confirmando la finalización.

A continuación comparo la respuesta a la misma entrada, entre el modelo estándar y el modelo afinado. Usando la misma terminación de chat para el modelo estándar gpt-3.5-turbo-0613 abajo:

Y realizando la misma consulta, pero utilizando el modelo afinado que aparece ahora a la derecha, y la respuesta esta vez. Utilizando el mismo sistema y la misma entrada de usuario, se obtiene una respuesta coherente con los datos de entrenamiento.

He aquí un ejemplo completo de consulta del modelo personalizado de ajuste fino a través de la API, utilizando curl:

curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key_goes_here" \
-d '{
"model": "ft:gpt-3.5-turbo-0613:your_org::80aO75sp",
"messages": [
{
"role": "system",
"content": "Marv is a factual chatbot that is also sarcastic."
},
{
"role": "user",
"content": "What artist has the most streams on Spotify?"
}
],
"temperature": 1,
"max_tokens": 256,
"top_p": 1,
"frequency_penalty": 0,
"presence_penalty": 0
}'

Y la respuesta:

{
"id": "chatcmpl-80akd2EE8BD85jfXMt0K6b8z1s6Yc",
"object": "chat.completion",
"created": 1695151963,
"model": "ft:gpt-3.5-turbo-0613:your_org::80aO75sp",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Oh, just some guy named Drake. Ever heard of him?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 33,
"completion_tokens": 13,
"total_tokens": 46
}
}

Conclusión

GPT-3.5
  1. Como muestro con los Diagramas de Venn en el artículo, no existe una solución mágica para las implementaciones empresariales personalizadas de los LLM.
  2. RAG es sin duda más fácil de implementar desde una perspectiva puramente de ser más fácil de segmentar y seguir el flujo de datos; moviéndose hacia un enfoque más agnóstico LLM.
  3. RAG requiere el proceso de fragmentación de datos y la creación de incrustaciones para las búsquedas de similitud semántica.
  4. La RAG no es tan opaca como el ajuste fino; las implementaciones de la RAG son transparentes en términos de observabilidad, inspeccionabilidad y optimización.
  5. El ajuste fino es más opaco y la comprensión de cómo reacciona el modelo no es transparente.
  6. El ajuste fino está evolucionando hacia un enfoque más rápido y menos técnico de las implementaciones personalizadas; menos pesado para las operaciones de ML.
  7. El reto del ajuste fino será la preparación, la conservación y la mejora continua de los datos de entrenamiento.
  8. El corpus de datos necesarios para el ajuste fino es cada vez menor, y los datos conversacionales existentes pueden utilizarse para crear datos de entrenamiento de ajuste fino.
  9. Con el ajuste fino se descarga al LLM de un grado considerable de complejidad técnica, a diferencia del GAR.

Sígueme en LinkedIn para estar al día sobre la IA conversacional 

Actualmente soy el Evangelista Jefe @ HumanFirst. Exploro y escribo sobre todas las cosas en la intersección de la IA y el lenguaje; que van desde LLMs, Chatbots, Voicebots, marcos de desarrollo, espacios latentes centrados en datosmás.

The post Ajuste del modelo turbo GPT-3.5 de OpenAI first appeared on Planeta Chatbot.

]]>
https://desa.planetachatbot.com/ajuste-del-modelo-turbo-gpt-3-5-de-openai/feed/ 0
Ejemplos prácticos de llamadas a funciones de OpenAI https://desa.planetachatbot.com/ejemplos-practicos-de-llamadas-a-funciones-de-openai/?utm_source=rss&utm_medium=rss&utm_campaign=ejemplos-practicos-de-llamadas-a-funciones-de-openai https://desa.planetachatbot.com/ejemplos-practicos-de-llamadas-a-funciones-de-openai/#respond Thu, 07 Sep 2023 06:00:44 +0000 https://desa.planetachatbot.com/?p=15401 Introducción Los grandes modelos lingüísticos (LLM), al igual que las interfaces de usuario conversacionales en general, son eficientes a la hora de recibir datos altamente desestructurados en forma de lenguaje natural conversacional. A continuación, estos datos desestructurados se estructuran, se procesan y, posteriormente, se vuelven a desestructurar en forma de salida de lenguaje natural de […]

The post Ejemplos prácticos de llamadas a funciones de OpenAI first appeared on Planeta Chatbot.

]]>

Introducción

Los grandes modelos lingüísticos (LLM), al igual que las interfaces de usuario conversacionales en general, son eficientes a la hora de recibir datos altamente desestructurados en forma de lenguaje natural conversacional. A continuación, estos datos desestructurados se estructuran, se procesan y, posteriormente, se vuelven a desestructurar en forma de salida de lenguaje natural de la mano de OpenAI.

OpenAI Function Calling estructura la salida para el consumo de la máquina en forma de API, en oposición al consumo humano en forma de lenguaje natural no estructurado.

Llamada a funciones

Con la llamada a la API, puede proporcionar funciones a gpt-3.5-turbo-0613 y gpt-4-0613, y hacer que el modelo genere de forma inteligente un objeto JSON con argumentos que, a su vez, puedes utilizar para llamar a la función en tu código.

La API de finalización de chat no llama directamente a la función, sino que genera un documento JSON que puedes utilizar en tu código.

Más información sobre OpenAI Function Calling aquí.

Con OpenAI Function Calling, la atención se centra en la salida JSON.

OpenAI

He aquí tres ejemplos prácticos de llamada a funciones:

Crear chatbots que respondan a preguntas llamando a API externas:

En este ejemplo, se compila un correo electrónico con algunos campos definidos, que deben rellenarse a partir de la entrada de lenguaje natural.

Sólo el primer nombre y la fecha se coloca dentro de la JSON, por lo tanto, el conjunto de datos no se reconoce y se itera a través.

url = «https://api.openai.com/v1/chat/completions»
payload = json.dumps({
«model»: «gpt-4-0613»,
«messages»: [
{
«role»: «user»,
«content»: «John has a birthday on 5 April and Adam has his on the 1 September, Elli is 24 December, Robert has his birthday on 6 March and lastly Adam is 15 April.»}
],
«functions»: [
{
«name»: «birthdays»,
«description»: «create a document of names and birthdays of 5 people»,
«parameters»: {
«type»: «object»,
«properties»: {
«name»: {
«type»: «string»,
«description»: «The name of the person»
},
«birthday»: {
«type»: «string»,
«description»: «and the date of the their birthday»
}
}
}
}
]
})
headers = {
‘Content-Type’: ‘application/json’,
‘Authorization’: ‘Basic xxxxxxxxxxxx’
}

response = requests.request(«POST», url, headers=headers, data=payload)

print(response.text)

Y el resultado:

{
«id»: «chatcmpl-7RjYzH9XaSAQ3Qn6X5j11J77vBGQX»,
«object»: «chat.completion»,
«created»: 1686844357,
«model»: «gpt-4-0613»,
«choices»: [
{
«index»: 0,
«message»: {
«role»: «assistant»,
«content»: null,
«function_call»: {
«name»: «birthdays»,
«arguments»: «{ \»name\»: \»John\», \»birthday\»: \»5 April\» }»
}
},
«finish_reason»: «function_call»
}
],
«usage»: {
«prompt_tokens»: 111,
«completion_tokens»: 21,
«total_tokens»: 132
}
}

En conclusión

Hay algunas consideraciones, sin embargo:

      1. Programáticamente, el chatbot/UI conversacional tendrá que saber que la salida al LLM debe estar en formato JSON. Por lo tanto, tendrá que haber algún tipo de clasificación o reconocimiento de intención para detectar que el tipo de salida debe ser JSON.

      1. Deberá existir y definirse una plantilla predefinida para la entrada al LLM de finalización. Como se ve en los ejemplos, la plantilla JSON guía al LLM sobre cómo rellenar los valores.

      1. Y lo que es más importante, como se ve en los ejemplos, los parámetros que deben rellenarse deben estar bien definidos. Un fallo produce el siguiente error: “We could not parse the JSON body of your request. (HINT: This likely means you aren’t using your HTTP library correctly. The OpenAI API expects a JSON payload, but what was sent was not valid JSON. If you have trouble figuring out how to fix this, please contact us through our help center at help.openai.com.)”

     Sígueme en LinkedIn para estar al día sobre la IA conversacional 

    Actualmente soy el Evangelista Jefe @ HumanFirst. Exploro y escribo sobre todas las cosas en la intersección de la IA y el lenguaje; que van desde LLMs, Chatbots, Voicebots, marcos de desarrollo, espacios latentes centrados en datos y más.

    Si el documento JSON no se define correctamente, el modelo OpenAI generará un error. Por lo tanto, existe un nivel de rigidez en cuanto a la definición de la estructura JSON que debe rellenarse.

    pip install openai

    import os
    import openai
    import requests
    import json
    openai.api_key = «xxxxxxxxxxxxxxxxxx»


    url = «https://api.openai.com/v1/chat/completions»
    payload = json.dumps({
    «model»: «gpt-4-0613»,
    «messages»: [
    {
    «role»: «user»,
    «content»: «Send Cobus from HumanFirst AI an email and ask him for the sales forecast spreadsheet. Schedule the mail for tomorrow at 12 noon.»
    }
    ],
    «functions»: [
    {
    «name»: «send_email»,
    «description»: «template to have an email sent.»,
    «parameters»: {
    «type»: «object»,
    «properties»: {
    «to_address»: {
    «type»: «string»,
    «description»: «To address for email»
    },
    «body»: {
    «type»: «string»,
    «description»: «Body of the email»
    },
    «date»: {
    «type»: «string»,
    «description»: «the date the email must be sent.»
    },
    «time»: {
    «type»: «string»,
    «description»: «the time the email must be sent.»
    }
    }
    }
    }
    ]
    })
    headers = {
    ‘Content-Type’: ‘application/json’,
    ‘Authorization’: ‘Basic xxxxxxxxxxxx’
    }

    response = requests.request(«POST», url, headers=headers, data=payload)

    print(response.text)

    Y la respuesta de la modelo:

    {
    "id": "chatcmpl-7RjMh7I0rVmCJkTCk4wvHDSNg8uQQ",
    "object": "chat.completion",
    "created": 1686843595,
    "model": "gpt-4-0613",
    "choices": [
    {
    "index": 0,
    "message": {
    "role": "assistant",
    "content": null,
    "function_call": {
    "name": "send_email",
    "arguments": "{\n \"to_address\": \"Cobus@HumanFirst.ai\",\n \"body\": \"Hello Cobus, \\n\\nCould you please provide the sales forecast spreadsheet? \\n\\nBest Regards\",\n \"date\": \"tomorrow\",\n \"time\": \"12 noon\"\n}"
    }
    },
    "finish_reason": "function_call"
    }
    ],
    "usage": {
    "prompt_tokens": 118,
    "completion_tokens": 65,
    "total_tokens": 183
    }
    }

    Convierte el lenguaje natural no estructurado en llamadas a la API:

    En este ejemplo, un pedido se convierte en una estructura JSON con fecha, notas, tipo de pedido, dirección de entrega, etc.


    url = "https://api.openai.com/v1/chat/completions"
    payload = json.dumps({
    "model": "gpt-4-0613",
    "messages": [
    {
    "role": "user",
    "content": "I would like to order two packs of cans, and have it delivered to 22 Fourth Avenue, Woodlands. I need this on the 27th of July. Just leave the order at the door, we live in a safe area."
    }
    ],
    "functions": [
    {
    "name": "order_detail",
    "description": "template to capture an order.",
    "parameters": {
    "type": "object",
    "properties": {
    "to_address": {
    "type": "string",
    "description": "To address for the delivery"
    },
    "order": {
    "type": "string",
    "description": "The detail of the order"
    },
    "date": {
    "type": "string",
    "description": "the date for delivery."
    },
    "notes": {
    "type": "string",
    "description": "Any delivery notes."
    }
    }
    }
    }
    ]
    })
    headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Basic xxxxxxxxxxx'
    }

    response = requests.request(«POST», url, headers=headers, data=payload)

     

    print(response.text)

    Y la respuesta:

    {
    "id": "chatcmpl-7RjQA8bEiPVRwh72gNUFouBq6urjo",
    "object": "chat.completion",
    "created": 1686843810,
    "model": "gpt-4-0613",
    "choices": [
    {
    "index": 0,
    "message": {
    "role": "assistant",
    "content": null,
    "function_call": {
    "name": "order_detail",
    "arguments": "{\n \"to_address\": \"22 Fourth Avenue, Woodlands\",\n \"order\": \"two packs of cans\",\n \"date\": \"27th of July\",\n \"notes\": \"Just leave the order at the door, we live in a safe area.\"\n}"
    }
    },
    "finish_reason": "function_call"
    }
    ],
    "usage": {
    "prompt_tokens": 132,
    "completion_tokens": 61,
    "total_tokens": 193
    }
    }

    Extraer datos estructurados a partir de texto:

    Este ejemplo final tiene una lista de nombres y cumpleaños, que necesita ser estructurada en JSON. Algo que encontré interesante, es que el modelo no itera a través de los nombres y fechas.

    Sólo el primer nombre y la fecha se coloca dentro de la JSON, por lo tanto, el conjunto de datos no se reconoce y se itera a través.

    url = «https://api.openai.com/v1/chat/completions»
    payload = json.dumps({
    «model»: «gpt-4-0613»,
    «messages»: [
    {
    «role»: «user»,
    «content»: «John has a birthday on 5 April and Adam has his on the 1 September, Elli is 24 December, Robert has his birthday on 6 March and lastly Adam is 15 April.»}
    ],
    «functions»: [
    {
    «name»: «birthdays»,
    «description»: «create a document of names and birthdays of 5 people»,
    «parameters»: {
    «type»: «object»,
    «properties»: {
    «name»: {
    «type»: «string»,
    «description»: «The name of the person»
    },
    «birthday»: {
    «type»: «string»,
    «description»: «and the date of the their birthday»
    }
    }
    }
    }
    ]
    })
    headers = {
    ‘Content-Type’: ‘application/json’,
    ‘Authorization’: ‘Basic xxxxxxxxxxxx’
    }

    response = requests.request(«POST», url, headers=headers, data=payload)

    print(response.text)

    Y el resultado:

    {
    «id»: «chatcmpl-7RjYzH9XaSAQ3Qn6X5j11J77vBGQX»,
    «object»: «chat.completion»,
    «created»: 1686844357,
    «model»: «gpt-4-0613»,
    «choices»: [
    {
    «index»: 0,
    «message»: {
    «role»: «assistant»,
    «content»: null,
    «function_call»: {
    «name»: «birthdays»,
    «arguments»: «{ \»name\»: \»John\», \»birthday\»: \»5 April\» }»
    }
    },
    «finish_reason»: «function_call»
    }
    ],
    «usage»: {
    «prompt_tokens»: 111,
    «completion_tokens»: 21,
    «total_tokens»: 132
    }
    }

    En conclusión

    Hay algunas consideraciones, sin embargo:

      1. Programáticamente, el chatbot/UI conversacional tendrá que saber que la salida al LLM debe estar en formato JSON. Por lo tanto, tendrá que haber algún tipo de clasificación o reconocimiento de intención para detectar que el tipo de salida debe ser JSON.

      1. Deberá existir y definirse una plantilla predefinida para la entrada al LLM de finalización. Como se ve en los ejemplos, la plantilla JSON guía al LLM sobre cómo rellenar los valores.

      1. Y lo que es más importante, como se ve en los ejemplos, los parámetros que deben rellenarse deben estar bien definidos. Un fallo produce el siguiente error: “We could not parse the JSON body of your request. (HINT: This likely means you aren’t using your HTTP library correctly. The OpenAI API expects a JSON payload, but what was sent was not valid JSON. If you have trouble figuring out how to fix this, please contact us through our help center at help.openai.com.)”

     Sígueme en LinkedIn para estar al día sobre la IA conversacional 

    Actualmente soy el Evangelista Jefe @ HumanFirst. Exploro y escribo sobre todas las cosas en la intersección de la IA y el lenguaje; que van desde LLMs, Chatbots, Voicebots, marcos de desarrollo, espacios latentes centrados en datos y más.

    The post Ejemplos prácticos de llamadas a funciones de OpenAI first appeared on Planeta Chatbot.

    ]]>
    https://desa.planetachatbot.com/ejemplos-practicos-de-llamadas-a-funciones-de-openai/feed/ 0
    ChatGPT: Instrucciones personalizadas https://desa.planetachatbot.com/chatgpt-instrucciones-personalizadas/?utm_source=rss&utm_medium=rss&utm_campaign=chatgpt-instrucciones-personalizadas https://desa.planetachatbot.com/chatgpt-instrucciones-personalizadas/#respond Tue, 08 Aug 2023 06:00:10 +0000 https://desa.planetachatbot.com/?p=15252 Al pedirle a GPT-4 que genere una respuesta de la misma manera en que lo hace la nueva característica llamada  Custom Instructions o Instrucciones Personalizadas, mejora considerablemente el resultado generado. ¿Cómo es la nueva función? Es importante responder de la misma manera que lo harían las instrucciones personalizadas de OpenAI ChatGPT. En la imagen de […]

    The post ChatGPT: Instrucciones personalizadas first appeared on Planeta Chatbot.

    ]]>
    Al pedirle a GPT-4 que genere una respuesta de la misma manera en que lo hace la nueva característica llamada  Custom Instructions o Instrucciones Personalizadas, mejora considerablemente el resultado generado.

    ¿Cómo es la nueva función?

    • La función de instrucciones personalizadas se encuentra actualmente en fase beta y sólo está disponible para los usuarios de ChatGPT Plus.
    • La ampliación a todos los usuarios se producirá en unas semanas.
    • Las funciones personalizadas introducen un nivel de personalización mediante preferencias o requisitos específicos del usuario. Para cada instancia generativa del LLM, se tendrán en cuenta las instrucciones específicas del usuario.
    • Como puede verse en la imagen siguiente, la respuesta del modelo GPT-4 mejora significativamente si se le pide que responda de la siguiente manera:

    Es importante responder de la misma manera que lo harían las instrucciones personalizadas de OpenAI ChatGPT.

    En la imagen de abajo verás el playground de OpenAI y las instrucciones dadas al modelo GPT-4. La salida coincide muy de cerca con la salida de las Instrucciones Personalizadas documentadas.

    Esto se consigue simplemente inyectando el prompt con los mismos datos contextuales, e instruyendo al modelo para que reaccione al estilo de las » Custom Instructions».

    El mismo escenario puede verse en la siguiente imagen. Para empezar tenemos la respuesta del patio de recreo, muy parecida a la función «Custom Instructions».

    A continuación se muestran ejemplos de cómo difiere la salida generada:

    De los ejemplos que se muestran a continuación, extraídos de la documentación de OpenAI, se desprende que ChatGPT tiene la ventaja del formato de texto para facilitar la lectura y digestión de los datos.

    Un segundo ejemplo:

    Con la salida:

    Instrucciones Personalizadas

    La interfaz ChatGPT tiene una ventaja:

    • Simplificación.
    • Una interfaz de usuario y una experiencia de usuario intuitivas y no técnicas.
    • Y formateo de la salida en términos de fuente, texto en negrita, tablas, etc.

    Sin embargo, los mismos datos pueden ser inyectados a través de la ingeniería prompt manualmente por el usuario. Y se puede pedir al modelo que imite la función de instrucciones personalizadas.
    La función de instrucciones personalizadas nos acerca a un escenario en el que las respuestas generadas son más personalizadas para cada usuario. Y OpenAI puede construir un perfil de cada usuario basándose en esta información.

    ⭐ Sígueme en LinkedIn para estar al día sobre la IA conversacional ⭐

    Actualmente soy el Evangelista Jefe @ HumanFirst. Exploro y escribo sobre todas las cosas en la intersección de la IA y el lenguaje; que van desde LLMs, Chatbots, Voicebots, marcos de desarrollo, espacios latentes centrados en datos y más.

    The post ChatGPT: Instrucciones personalizadas first appeared on Planeta Chatbot.

    ]]>
    https://desa.planetachatbot.com/chatgpt-instrucciones-personalizadas/feed/ 0
    Desarrolla tu propio ChatGPT o HuggingChat https://desa.planetachatbot.com/desarrolla-tu-chatgpt-o-huggingchat/?utm_source=rss&utm_medium=rss&utm_campaign=desarrolla-tu-chatgpt-o-huggingchat https://desa.planetachatbot.com/desarrolla-tu-chatgpt-o-huggingchat/#respond Tue, 18 Jul 2023 06:00:53 +0000 https://desa.planetachatbot.com/?p=15043 HuggingChat y ChatGPT (como se ve a continuación) son interfaces generales de chatbot. Los usuarios pueden mantener conversaciones generales con los chatbots a través de una interfaz gráfica basada en web. La idea es que ambos servicios actúen como el asistente personal definitivo. Estas interfaces están constituidas por tres capas clave: A medida que crece […]

    The post Desarrolla tu propio ChatGPT o HuggingChat first appeared on Planeta Chatbot.

    ]]>

    HuggingChat y ChatGPT (como se ve a continuación) son interfaces generales de chatbot. Los usuarios pueden mantener conversaciones generales con los chatbots a través de una interfaz gráfica basada en web. La idea es que ambos servicios actúen como el asistente personal definitivo.

    Estas interfaces están constituidas por tres capas clave:

    • Large Language Model
    • API Call
    • Memoria de conversación/gestión de contexto
    • Interfaz gráfica de usuario

    A medida que crece el uso de estas interfaces de chat, los usuarios tienen un deseo natural de desarrollar o construir sobre estas interfaces. Y los LLM sobre los que se construyen estas interfaces de chat ya están disponibles.

    En el caso de ChatGPT, los LLM utilizados son gpt-4, gpt-3.5-turbo, gpt-4-0214, gpt-3.5-turbo-0301.

    En el caso de HuggingChat, el modelo actual es OpenAssistant/oasst-sft-6-llama-30b-xor .

    Pero, tener acceso a la API no resuelve el requisito de gestionar el contexto de la conversación y la memoria, esto tendrá que ser desarrollado.

    Más información sobre la gestión de la memoria del chatbot aquí.

    La integración con la memoria permite mantener conversaciones de tipo humano con grandes modelos lingüísticos (LLM). El contexto de la conversación se gestiona y los usuarios pueden hacer preguntas de seguimiento haciendo referencia implícita al contexto de la conversación. Este elemento es vital para las conversaciones largas de varios turnos.

    Haystack ha publicado recientemente un cuaderno que guía a los usuarios paso a paso en la construcción de su propia interfaz HuggingChat basado en el mismo LLM que HuggingChat está utilizando actualmente.

    Como se puede ver a continuación, el cuaderno también genera una GUI a través de la cual se puede mantener una conversación con el chatbot, ver y borrar la memoria.

    ⭐ Por favor, sígueme en LinkedIn para actualizaciones sobre LLMs ⭐

    A continuación, una guía completa sobre cómo tener tu propio asistente personal funcionando en un portátil.

    En primer lugar, instala haystack:

    pip install --upgrade pip pip install farm-haystack[colab]

    Para acceder a las API de inferencia alojadas en HuggingFace, debe proporcionar una clave de API para HuggingFace:

    from getpass import getpass model_api_key = getpass("Enter model provider API key:")

    Un PromptNode se inicializa con el nombre del modelo, la clave api y la longitud máxima. Haremos referencia al mismo LLM utilizado por HuggingChat:

    OpenAssistant/oasst-sft-1-pythia-12b

    from haystack.nodes import PromptNode model_name = "OpenAssistant/oasst-sft-1-pythia-12b" prompt_node = PromptNode(model_name, api_key=model_api_key, max_length=256)

    Para que la interfaz conversacional sea más parecida a la humana, es necesario crear memoria.

    Hay dos tipos de opciones de memoria en Haystack:

    1. ConversationMemory: almacena el historial de conversaciones (por defecto).
    2. ConversationSummaryMemory: almacena el historial de conversaciones y genera resúmenes periódicamente.
    from haystack.agents.memory import ConversationSummaryMemory summary_memory = ConversationSummaryMemory(prompt_node)

    Ahora se puede inicializar el ConversationalAgent. Como PromptTemplate, ConversationalAgent utiliza conversational-agent por defecto.

    from haystack.agents.conversational import ConversationalAgent conversational_agent = ConversationalAgent(prompt_node=prompt_node, memory=summary_memory)

    El uso de la memoria puede ilustrarse formulando una pregunta, seguida de una segunda pregunta. La segunda pregunta hace referencia implícita al contexto de la primera:

    Primera pregunta:

    DIme las tres cosas más interesantes de Estambul, Turquía

    Segunda pregunta:

    ¿Puedes dar más detalles sobre el segundo punto?

    A continuación puedes ver cómo pueden publicarse las preguntas:

    conversational_agent.run("Tell me three most interesting things about Istanbul, Turkey")

    Y la pregunta implícita de seguimiento:

    conversational_agent.run("Can you turn this info into a twitter thread?")

    Lleva tu experiencia de chat al siguiente nivel con la siguiente aplicación de ejemplo…

    Aquí está la ventana de chat interactiva dentro de Colab que el código generará:

    ChatGPT

    Ejecuta la celda de código que aparece a continuación y utiliza el área de texto para intercambiar mensajes con el agente conversacional. Utiliza los botones de la derecha para cargar o borrar el historial de chat.

    import ipywidgets as widgets from IPython.display import clear_output ## Text Input user_input = widgets.Textarea( value="", placeholder="Type your prompt here", disabled=False, style={"description_width": "initial"}, layout=widgets.Layout(width="100%", height="100%"), ) ## Submit Button submit_button = widgets.Button( description="Submit", button_style="success", layout=widgets.Layout(width="100%", height="80%") ) def on_button_clicked(b): user_prompt = user_input.value user_input.value = "" print("\nUser:\n", user_prompt) conversational_agent.run(user_prompt) submit_button.on_click(on_button_clicked) ## Show Memory Button memory_button = widgets.Button( description="Show Memory", button_style="info", layout=widgets.Layout(width="100%", height="100%") ) def on_memory_button_clicked(b): memory = conversational_agent.memory.load() if len(memory): print("\nMemory:\n", memory) else: print("Memory is empty") memory_button.on_click(on_memory_button_clicked) ## Clear Memory Button clear_button = widgets.Button( description="Clear Memory", button_style="warning", layout=widgets.Layout(width="100%", height="100%") ) def on_clear_button_button_clicked(b): conversational_agent.memory.clear() print("\nMemory is cleared\n") clear_button.on_click(on_clear_button_button_clicked) ## Layout grid = widgets.GridspecLayout(3, 3, height="200px", width="800px", grid_gap="10px") grid[0, 2] = clear_button grid[0:2, 0:2] = user_input grid[2, 0:] = submit_button grid[1, 2] = memory_button display(grid)

    ⭐ Sígueme en LinkedIn para estar al día sobre la IA conversacional ⭐

    Actualmente soy el Evangelista Jefe @HumanFirst. Exploro y escribo sobre todas las cosas en la intersección de la IA y el lenguaje; que van desde LLMs, Chatbots, Voicebots, Marcos de Desarrollo, Data-Centric espacios latentes y más.

    The post Desarrolla tu propio ChatGPT o HuggingChat first appeared on Planeta Chatbot.

    ]]>
    https://desa.planetachatbot.com/desarrolla-tu-chatgpt-o-huggingchat/feed/ 0
    Prompt Pipelines de IA Generativa https://desa.planetachatbot.com/prompt-pipelines-de-ia-generativa/?utm_source=rss&utm_medium=rss&utm_campaign=prompt-pipelines-de-ia-generativa https://desa.planetachatbot.com/prompt-pipelines-de-ia-generativa/#respond Tue, 23 May 2023 06:00:00 +0000 https://desa.planetachatbot.com/?p=14444 El formato de entrada para la IA Generativa basada en Modelos de Lenguaje Amplio es el principio de las prompts. Ha habido una evolución de la ingeniería de prompts de IA generativa… En este artículo se describirá el uso de los prompt pipelines. En el Machine Learning, una canalización puede describirse como una construcción integral que […]

    The post Prompt Pipelines de IA Generativa first appeared on Planeta Chatbot.

    ]]>
    El formato de entrada para la IA Generativa basada en Modelos de Lenguaje Amplio es el principio de las prompts.

    Ha habido una evolución de la ingeniería de prompts de IA generativa…

    1. Ingeniería de prompts de contenido estático
    2. Plantillas de instrucciones
    3. Encadenamiento de instrucciones
    4. Canalización de instrucciones

    En este artículo se describirá el uso de los prompt pipelines.

    En el Machine Learning, una canalización puede describirse como una construcción integral que organiza un flujo de eventos y datos.

    La canalización se pone en marcha o se inicia mediante un disparador y, en función de determinados eventos y parámetros, se sigue un flujo que da como resultado una salida.

    En el caso de un canal de avisos, el flujo se inicia en la mayoría de los casos por una petición del usuario. La solicitud se dirige a una plantilla específica.

    Las ventajas de plantillas prompts son:

    1. Los prompts LLM pueden ser reutilizados y compartidos y programados.
    2. Las plantillas de prompts generativas permiten la programabilidad de almacenamiento y reutilización.
    3. Plantillas, que actúan como un archivo de texto, pero se insertan marcadores de posición para variables y expresiones.
    4. Los marcadores de posición se sustituyen por valores en tiempo de ejecución.
    5. Las prompts pueden utilizarse dentro del contexto y es una forma medida de controlar el contenido generado.

    Los «prompt pipelines» también pueden describirse como una extensión inteligente de las plantillas de «prompt».

    Las variables o marcadores de posición de la plantilla predefinida se rellenan (también conocido como inyección de preguntas) con la pregunta del usuario y el conocimiento que se debe buscar en el Knowledge store

    Los datos del Knowledge store actúan como referencia para la pregunta a la que hay que responder. Disponer de este conjunto de información evita las alucinaciones del LLM. También evita que el LLM utilice datos antiguos o anticuados del modelo que son inexactos en ese momento.

    Posteriormente, la pregunta compuesta se envía al LLM y la respuesta del LLM se devuelve al usuario.
    A continuación se muestra un ejemplo de un modelo de prompt antes de inyectar el documento y los datos de la pregunta.

    prompt_template_text="""Synthesize a comprehensive answer from the following text for the given question. Provide a clear and concise response that summarizes the key points and information presented in the text. Your answer should be in your own words and be no longer than 50 words. nn Related text: {join(documents)} nn Question: {query} nn Answer:"""

    De nuevo a continuación, una pregunta formulada por el usuario, que se inyecta con los datos del Knowledge store.

    output = pipe.run(query="How does Rhodes Statue look like?") print(output["results"])

    Y finalmente el resultado a la pregunta:

    [‘The head would have had curly hair with evenly spaced spikes of bronze or silver flame radiating, similar to the images found on contemporary Rhodian coins.’]

    Reflexiones finales

    Teniendo en cuenta la imagen de abajo, en un próximo artículo me gustaría discutir cómo un prompt pipeline puede ser implementado para un dominio más amplio con múltiples clases de entrada de usuario.

    (1) La entrada del usuario debe ser categorizada y asignada a una plantilla específica y aplicable. Estas categorías son análogas a la asignación de la entrada del usuario a una intención.

    En función de la clasificación asignada a la entrada del usuario, deben extraerse los datos correctos (2) e inyectarse (3) en la plantilla de avisos.

    IA Generativa

    ⭐ Sígueme en LinkedIn para estar al día sobre la IA conversacional ⭐

    Actualmente soy el Evangelista Jefe @HumanFirst. Exploro y escribo sobre todas las cosas en la intersección de la IA y el lenguaje; que van desde LLMs, Chatbots, Voicebots, Marcos de Desarrollo, Data-Centric espacios latentes y más.

    The post Prompt Pipelines de IA Generativa first appeared on Planeta Chatbot.

    ]]>
    https://desa.planetachatbot.com/prompt-pipelines-de-ia-generativa/feed/ 0
    Modelos, estructuras y formatos de inputs de ChatGPT https://desa.planetachatbot.com/modelos-estructuras-y-formatos-de-inputs-de-chatgpt/?utm_source=rss&utm_medium=rss&utm_campaign=modelos-estructuras-y-formatos-de-inputs-de-chatgpt https://desa.planetachatbot.com/modelos-estructuras-y-formatos-de-inputs-de-chatgpt/#respond Thu, 27 Apr 2023 06:00:56 +0000 https://desa.planetachatbot.com/?p=14238 Para crear tu propio servicio similar a ChatGPT, es importante entender cómo está construido ChatGPT y cómo implementar los distintos componentes. Para principiantes ChatGPT no es un Large Language Model (LLM), o una interfaz de desarrollo, es un servicio conversacional que está disponible y alojado por OpenAI. En resumen, el servicio ChatGPT de OpenAI es […]

    The post Modelos, estructuras y formatos de inputs de ChatGPT first appeared on Planeta Chatbot.

    ]]>

    Para crear tu propio servicio similar a ChatGPT, es importante entender cómo está construido ChatGPT y cómo implementar los distintos componentes.

    Para principiantes

    ChatGPT no es un Large Language Model (LLM), o una interfaz de desarrollo, es un servicio conversacional que está disponible y alojado por OpenAI.

    En resumen, el servicio ChatGPT de OpenAI es una interfaz de usuario conversacional basada en LLM a través de un navegador, que gestiona automáticamente la memoria conversacional y el estado del diálogo.

    ChatGPT Plus y ChatGPT Plugins son claros indicios de que OpenAI pretende desarrollar ChatGPT como un producto que se extienda a la oferta de servicios.

    Dos principios clave que ChatGPT Plus y Plugins dominan son:

       

        • Síntesis de datos. ChatGPT puede extraer datos de diversas fuentes. Por ejemplo, se pueden combinar y sintetizar datos existentes en el LLM junto con datos extraídos de la web. Los datos procedentes de diversas fuentes deben sintetizarse en turnos de diálogo coherentes y sucintos dentro de una conversación más amplia.

        • Calibración. La interfaz necesita saber de dónde extraer datos y a qué datos dar prioridad.

      Plugins de ChatGPT

      Plugins es una progresión natural para que ChatGPT se extienda en productos y servicios con el fin de ser habilitado para ejecutar las solicitudes de los usuarios.

      Los plugins OpenAI conectan ChatGPT a aplicaciones de terceros. Estos plugins permiten a ChatGPT interactuar con API definidas por desarrolladores, mejorando las capacidades de ChatGPT y permitiéndole realizar una amplia gama de acciones.

      Los plugins de ChatGPT crecerán en número de servicios compatibles y granularidad. El concepto de plugins ha sido descrito por algunos como la AppStore de OpenAI o ChatGPT.

      Estructura de ChatGPT

      Con el lanzamiento de la API ChatGPT, la expectativa de los desarrolladores era una interfaz conversacional completa y gestionada; lo que no fue el caso.

      Como puede verse en la siguiente imagen, la API de ChatGPT da acceso a los modelos LLM (4) utilizados para ChatGPT, que se enumeran a continuación. Sin embargo, para los componentes 1, 2 y 3, la funcionalidad tendrá que desarrollarse para cualquier solución propia.

      La funcionalidad para el componente tres (síntesis de datos y calibración) será probablemente más difícil de desarrollar de tal forma que se iguale la funcionalidad desarrollada por OpenAI.

      Más información sobre la gestión de la memoria contextual de la conversación y el estado del diálogo aquí.

      Modelos de ChatGPT

      ChatGPT se basa en dos de los modelos más potentes de OpenAI: gpt-3.5-turbo y gpt-4.
      gpt-3.5-turbo es una colección de modelos que mejora gpt-3 y que puede entender y también generar lenguaje natural o código. A continuación encontrará más información sobre los dos modelos gpt-3:

      Hay que señalar que gpt-4, que actualmente se encuentra en fase beta limitada, es un conjunto de modelos que, de nuevo, mejora a GPT-3.5 y puede comprender y también generar lenguaje natural o código.

      GPT-4 se encuentra actualmente en fase beta limitada y sólo es accesible para quienes hayan obtenido acceso.

      Formatos de inputs

      Puedes construir tus propias aplicaciones con gpt-3.5-turbo o gpt-4 usando la API OpenAI, haciendo uso del código de ejemplo de abajo para empezar.

      Fíjate en el formato de los datos de entrada, puedes leer más sobre Chat Markup Language (ChatML) aquí.

      pip install openai

      import os
      import openai
      openai.api_key = "xxxxxxxxxxxxxxxxxxxxxxx"

      completion = openai.ChatCompletion.create(
      model="gpt-3.5-turbo",
      messages = [{"role": "system", "content" : "You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible.\nKnowledge cutoff: 2021-09-01\nCurrent date: 2023-03-02"},
      {"role": "user", "content" : "How are you?"},
      {"role": "assistant", "content" : "I am doing well"},
      {"role": "user", "content" : "How long does light take to travel from the sun to the eart?"}]
      )
      print(completion)

      A continuación se muestra la respuesta o salida del modelo gpt-3.5-turbo:

      { "choices": [ { "finish_reason": "stop", "index": 0, "message": { "content": "It takes about 8 minutes and 20 seconds for light to travel from the sun to the earth.", "role": "assistant" } } ], "created": 1678039126, "id": "chatcmpl-6qmv8IVkCclnlsF5ODqlnx9v9Wm3X", "model": "gpt-3.5-turbo-0301", "object": "chat.completion", "usage": { "completion_tokens": 23, "prompt_tokens": 89, "total_tokens": 112 } }

      Las definiciones de los campos del objeto de respuesta son

      • id: el ID de la solicitud
      • object: el tipo de objeto devuelto (por ejemplo, chat.completion)
      • created: fecha y hora de la solicitud
      • model: nombre completo del modelo utilizado para generar la respuesta
      • usage: el número de tokens utilizados para generar las respuestas, contando prompt, completion y total
      • choices: una lista de objetos de finalización (sólo uno, a menos que establezca n mayor que 1)
      • message: el objeto mensaje generado por el modelo, con rol y contenido
      • finish_reason: la razón por la que el modelo ha dejado de generar texto (o bien stop, o bien length si se ha alcanzado el límite max_tokens)
      • index: el índice de la finalización en la lista de opciones

      Por último

      Además de la falta de gestión del contexto, OpenAI también afirma que gpt-3.5-turbo-0301 no presta mucha atención al mensaje del sistema, y es necesario prestar más atención a las instrucciones de un mensaje de usuario.

      Si la salida generada por el modelo no es satisfactoria, es necesario iterar y experimentar para obtener mejoras. Por ejemplo:

      • Haciendo las instrucciones más explícitas
      • Especificando el formato de la respuesta
      • Pidiendo al modelo que piense paso a paso o secuencialmente

      En tercer y último lugar, los modelos gpt-3.5-turbo no disponen de ajuste fino; sólo pueden ajustarse los modelos GPT-3 de base.

      The post Modelos, estructuras y formatos de inputs de ChatGPT first appeared on Planeta Chatbot.

      ]]>
      https://desa.planetachatbot.com/modelos-estructuras-y-formatos-de-inputs-de-chatgpt/feed/ 0
      LangChain el software de código abierto para la gestión del estado de diálogo y la memoria contextual de LLM https://desa.planetachatbot.com/langchain-software-de-codigo-abierto-para-gestion-del-estado-de-dialogo-y-memoria-contextual-de-llm/?utm_source=rss&utm_medium=rss&utm_campaign=langchain-software-de-codigo-abierto-para-gestion-del-estado-de-dialogo-y-memoria-contextual-de-llm https://desa.planetachatbot.com/langchain-software-de-codigo-abierto-para-gestion-del-estado-de-dialogo-y-memoria-contextual-de-llm/#respond Tue, 04 Apr 2023 06:00:15 +0000 https://desa.planetachatbot.com/?p=14089 Langchain es una iniciativa de código abierto que aborda uno de los problemas más acuciantes de los grandes modelos lingüísticos (LLM): la gestión de una conversación. De forma nativa, las APIs LLM funcionan bien para escenarios de un solo turno de diálogo, tipo comando-y-respuesta. ¿Pero qué pasa si quieres usar un LLM para un diálogo […]

      The post LangChain el software de código abierto para la gestión del estado de diálogo y la memoria contextual de LLM first appeared on Planeta Chatbot.

      ]]>
      Langchain es una iniciativa de código abierto que aborda uno de los problemas más acuciantes de los grandes modelos lingüísticos (LLM): la gestión de una conversación.

      De forma nativa, las APIs LLM funcionan bien para escenarios de un solo turno de diálogo, tipo comando-y-respuesta.

      ¿Pero qué pasa si quieres usar un LLM para un diálogo multi-turn entre el usuario y el LLM? Por lo tanto, ¿la misma funcionalidad que esperas encontrar en un chatbot o agente digital?

      Demostración de LangChain en HuggingFace🤗

      Tienes dos opciones…

      1⃣ La primera vía es hacer uso de un marco de desarrollo de IA conversacional como Cognigy, OneReach AI y algunos otros para integrar a los LLM.

      Sin embargo, la premisa de hacer uso de él, será únicamente tener acceso a un entorno de gestión de diálogos. Y con esto viene una sobrecarga adicional en forma de coste, funcionalidad no deseada y complejidad.

      2⃣ La segunda opción es escribir tu propio software de gestión de diálogos.
      💡 De ahí que LangChain tenga mucho sentido para habilitar LLMs para la gestión de diálogos.

      LangChain es una fina capa de pro-código que convierte interacciones LLM sucesivas (secuenciales) en una experiencia conversacional natural.

      Ya sea gestionando el proceso de creación de prompts, recopilando datos del usuario de forma conversacional, integración API, desarrollo de diálogos, contexto y memoria de conversación, y mucho más…

      En palabras de LangChain:

      Los LLM están emergiendo como una tecnología transformadora, que permite a los desarrolladores crear aplicaciones que antes no podían. Pero utilizar estos LLM de forma aislada no suele ser suficiente para crear una aplicación realmente potente: la verdadera potencia llega cuando eres capaz de combinarlos con otras fuentes de computación o conocimiento.

      Pero primero, ¿cuáles son los elementos de la gestión de diálogos?

      ⚙ Gestión del estado/flujo del diálogo

      Es el proceso de gestionar cada conversación dentro de un árbol de decisiones predefinido. Para cada conversación, el chatbot debe saber, en función de los criterios disponibles, cuál es el siguiente diálogo al que debe dirigirse.

      El estado del diálogo se define normalmente a través de un editor de flujo de diálogo. Los editores de flujo de diálogo pueden ser pro-code, low-code o no-code.

      ⚙ Contexto conversacional y memoria

      El contexto conversacional hace que la experiencia de conversación del usuario sea más natural e intuitiva. El conocimiento del contexto permite al robot hacer suposiciones basándose en expresiones anteriores del usuario. También ayuda a que el bot no tenga que volver a preguntar a los usuarios por datos ya introducidos.

      ⚙ Memoria conversacional a largo plazo

      A la gente le gusta hablar con el mismo representante de atención al cliente, porque existe una memoria a largo plazo. Y esta memoria optimiza la llamada y hace que la experiencia sea más eficaz.
      Lo mismo puede hacerse a través de un chatbot.

      ⚙ Integración con API externas

      Dialog Management incluye funciones para realizar llamadas a una API externa, procesar los datos e incluirlos como parte de la narración. Piensa en un bot meteorológico, que necesitaría acceder a una API meteorológica para recuperar y presentar para una ciudad solicitada.

      ⚙ Integración de la base de conocimientos y QnA

      La funcionalidad QnA y de base de conocimientos es cada vez más importante y la mayoría de los diseñadores de flujos de conversación tienen o prevén algún tipo de acceso a la base de conocimientos.

      ⚙ Interfaz de desarrollo

      En general, existen cuatro enfoques para las interfaces de desarrollo de flujos de diálogo. De ellos, los editores visuales de flujos de diálogo son los más populares debido a su naturaleza visual y sin código. Como se puede apreciar en la siguiente imagen:

      Consideraciones a tener en cuenta a la hora de utilizar LangChain

      ⏺ La aplicación LangChain tendrá que estar alojada en algún lugar. Por lo tanto, con LangChain vienen los gastos generales de alojamiento, procesamiento, mantenimiento de código, planificación de la continuidad del negocio, redundancia, disponibilidad regional y latencia.

      ⏺ LangChain es perfecto para aplicaciones de demostración y prototipos de alta fidelidad. Sin embargo, para una implementación de producción la arquitectura del sistema será importante.

      ⏺ LangChain es pro-código, por lo que habrá una división entre diseño y desarrollo. Los desarrolladores tendrán que interpretar el diseño. En los últimos años hemos visto cómo se ha aprovechado el proceso de diseño. Por lo tanto, el proceso de diseño a través de una interfaz gráfica de usuario sin código se exporta a una versión lista para la producción del flujo.

      ⏺ A medida que una aplicación crezca, la complejidad también aumentará, los despliegues serán más arriesgados y las pruebas de regresión de la interfaz conversacional serán importantes.

      ⏺ La esperanza es que gran parte de la gestión de errores (fall-back para fuera de dominio, etc.) se puede derivar al LLM para la gestión.

      ⏺ Una gran parte del desarrollo de LangChain serán los aspectos de gestión de la conversación.

      Langchain
      Chatbot potenciado por LangChain. Se trata de un asistente de IA para la biblioteca de código abierto LangChain. Puedes encontrar más información sobre LangChain en https://langchain.readthedocs.io.

      Ejemplos de código

      La mejor manera de hacerse una idea de LangChain es considerar algunos prototipos… El ejemplo más básico del uso de LangChain para consultar OpenAI:

      pip install langchain
      pip install langchain[all]
      pip install openai
      import os
      os.environ["OPENAI_API_KEY"] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

      from langchain.llms import OpenAI
      llm = OpenAI(temperature=0.9)
      text = "What day of the week was it on 15 April 1973?"
      print(llm(text))

      Añadir una variable:

      from langchain.prompts import PromptTemplate
      
      prompt = PromptTemplate(
          input_variables=["product"],
          template="What is a good name for a company that makes {product}?",
      
      print(prompt.format(product="typing machines"))
      
      llm = OpenAI(temperature=0.9)
      text = (prompt.format(product="typing machines"))
      print(llm(text))

      ⬇ Vista de cuaderno:

      El siguiente prototipo es un buen ejemplo de cómo se puede utilizar LangChain para automatizar la ingeniería de avisos y aprovechar los LLM para el contexto conversacional:

      from langchain.llms import OpenAI
      from langchain.chains import ConversationChain
      from langchain.chains.conversation.memory import ConversationBufferMemory

      llm = OpenAI(temperature=0)
      conversation = ConversationChain(
      llm=llm,
      verbose=True,
      memory=ConversationBufferMemory()
      )

      conversation.predict(input="Hi there!")

      Respuesta:

      > Entering new ConversationChain chain...
      Prompt after formatting:
      The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.

      Current conversation:

      Human: Hi there!
      AI:

      > Finished chain.
      Hi there! It's nice to meet you. My name is AI. What's your name?

      Input:

      conversation.predict(input="My name is Cobus")

      Respuesta:

      > Entering new ConversationChain chain...
      Prompt after formatting:
      The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.
      
      Current conversation:
      
      Human: Hi there!
      AI:  Hi there! It's nice to meet you. My name is AI. What's your name?
      Human: My name is Cobus
      AI:
      
      > Finished chain.
       Nice to meet you, Cobus! What can I do for you today?

      Este enfoque no es óptimo para conversaciones largas, ya que el tamaño del prompt enviado al LLM crecerá demasiado.

      En este último ejemplo, se pide al usuario que introduzca información y ésta se utiliza para generar la respuesta, y también ilustra cómo se combinan dos cadenas.

      title = input('What is your title? ')
      print ('I have your title as ' + title)

      era = input('Lasty, from what era should the text be? ')
      print ('I have your era as ' + era)

      # This is an LLMChain to write a synopsis given a title of a play and the era it is set in.
      llm = OpenAI(temperature=.7)
      template = """You are a playwright. Given the title of play and the era it is set in, it is your job to write a synopsis for that title.

      Title: {title}
      Era: {era}
      Playwright: This is a synopsis for the above play:"""
      prompt_template = PromptTemplate(input_variables=["title", 'era'], template=template)
      synopsis_chain = LLMChain(llm=llm, prompt=prompt_template, output_key="synopsis")

      # This is an LLMChain to write a review of a play given a synopsis.
      llm = OpenAI(temperature=.7)
      template = """You are a play critic from the New York Times. Given the synopsis of play, it is your job to write a review for that play.

      Play Synopsis:
      {synopsis}
      Review from a New York Times play critic of the above play:"""
      prompt_template = PromptTemplate(input_variables=["synopsis"], template=template)
      review_chain = LLMChain(llm=llm, prompt=prompt_template, output_key="review")

      # This is the overall chain where we run these two chains in sequence.
      from langchain.chains import SequentialChain
      overall_chain = SequentialChain(
      chains=[synopsis_chain, review_chain],
      input_variables=["era", "title"],
      # Here we return multiple variables
      output_variables=["synopsis", "review"],
      verbose=True)


      review = overall_chain({"title":title, "era": era})
      print (review)

      Y la salida:

      > Entering new SequentialChain chain...

      > Finished chain.
      {'title': 'Tragedy at sunset on the beach', 'era': 'Victorian ', 'synopsis': "\n\nTragedy at Sunset on the Beach is set in the Victorian era and tells the story of a young girl, Amelia, whose search for love and happiness leads her to a fateful encounter with a mysterious stranger on the beach at sunset. While walking along the shore, Amelia meets a man named William, who presents her with a rose as a symbol of his affection. Though she initially resists his advances, Amelia eventually finds herself drawn to William and the two quickly grow close. \n\nHowever, as the sun sets, a secret from William's past is revealed that changes everything. It turns out that William is a wanted criminal and is being pursued by the police. After a tense confrontation, William is arrested and taken away, leaving Amelia heartbroken and alone.\n\nIn the aftermath of their chance encounter, Amelia is forced to grapple with the tragedy of her unrequited love, and the harsh realities of life. Her journey serves as a reminder that love isn't always as simple and straightforward as it may seem.", 'review': '\n\nTragedy at Sunset on the Beach is a captivating tale of love, loss, and the power of the human spirit. The set in the Victorian era allows for a unique perspective on the themes of the story, and the performance by the cast is truly remarkable.\n\nThe story follows Amelia, a young girl whose search for love and happiness leads her to a fateful encounter with a mysterious stranger on the beach at sunset. We watch as Amelia’s relationship with the stranger, William, develops and evolves, only to be cut short when a secret from his past is revealed. This revelation forces Amelia to confront the harsh realities of life and the tragedy of her unrequited love.\n\nThe play is a thought-provoking exploration of love, sacrifice, and the power of human connection. It’s a story that is sure to resonate with audiences who are looking for a story of love, loss, and hope. Highly recommended.'}

      En conclusión

      En otros artículos, he escrito varias veces sobre la fragmentación que se avecina y sobre el hecho de que un único marco de IA conversacional no será suficiente.

      Ya estamos viendo que los LLM están obligando a los proveedores tradicionales de frameworks de chatbot a mirar hacia fuera en busca de tecnologías que deberían prever.

      LangChain es un software que llena una voz crítica que existe actualmente para hacer que los LLM sean más conversacionales.

      ⭐ Sígueme en LinkedIn para estar al día sobre la IA conversacional ⭐

      The post LangChain el software de código abierto para la gestión del estado de diálogo y la memoria contextual de LLM first appeared on Planeta Chatbot.

      ]]>
      https://desa.planetachatbot.com/langchain-software-de-codigo-abierto-para-gestion-del-estado-de-dialogo-y-memoria-contextual-de-llm/feed/ 0
      Probando el nuevo clasificador de textos de OpenAI para identificar contenidos escritos con IA https://desa.planetachatbot.com/probando-nuevo-clasificador-de-textos-de-openai-para-identificar-contenidos-escritos-con-ia/?utm_source=rss&utm_medium=rss&utm_campaign=probando-nuevo-clasificador-de-textos-de-openai-para-identificar-contenidos-escritos-con-ia https://desa.planetachatbot.com/probando-nuevo-clasificador-de-textos-de-openai-para-identificar-contenidos-escritos-con-ia/#respond Thu, 02 Mar 2023 06:00:05 +0000 https://desa.planetachatbot.com/?p=13694 OpenAI anunció y ha lanzado un clasificadoor entrenado para distinguir entre texto escrito por IA y texto escrito por humanos. Cada documento presentado se clasifica en una de cinco clases:1️⃣ Muy improbable generado por IA2️⃣ Improbable generado por IA3️⃣ No está claro si está generado por IA4️⃣ Posiblemente generado por IA5️⃣ Probablemente generado por IA […]

      The post Probando el nuevo clasificador de textos de OpenAI para identificar contenidos escritos con IA first appeared on Planeta Chatbot.

      ]]>
      OpenAI anunció y ha lanzado un clasificadoor entrenado para distinguir entre texto escrito por IA y texto escrito por humanos.

      Cada documento presentado se clasifica en una de cinco clases:
      1⃣ Muy improbable generado por IA
      2⃣ Improbable generado por IA
      3⃣ No está claro si está generado por IA
      4⃣ Posiblemente generado por IA
      5⃣ Probablemente generado por IA

      OpenAI ha entrenado un clasificador para diferenciar entre texto escrito por humanos y por IA basándose en un modelo GPT ajustado. El modelo puede predecir la probabilidad de que una porción de texto haya sido generada por IA o no, y a partir de una variedad de fuentes, incluyendo ChatGPT.

      Utilicé AI21Labs, Cohere, text-davinci-003, ChatGPT y otras fuentes para generar texto sobre un tema arbitrario y ambiguo como «puntualidad» para probar el clasificador.

      En la tabla siguiente se muestra un resumen de los resultados, con la fuente del texto a la izquierda y la precisión del clasificador a la derecha. Los detalles de los resultados se discuten en el artículo…

      OpenAI afirma claramente lo siguiente:

      Nuestro clasificador no es totalmente fiable.

      En nuestras evaluaciones sobre un «conjunto de desafíos» de textos en inglés, nuestro clasificador identifica correctamente el 26% de los textos escritos por IA (verdaderos positivos) como «probablemente escritos por IA».

      Mientras que en el 9% de los casos (falsos positivos), el texto escrito por humanos se considera escrito por inteligencia artificial.

      La fiabilidad de nuestro clasificador suele mejorar a medida que aumenta la longitud del texto de entrada.

      En comparación con nuestro clasificador anterior, este nuevo clasificador es significativamente más fiable con textos de sistemas de IA más recientes.

      Texto generado a través de Cohere LLM

      En la imagen de abajo se ve el texto generado en el sistema Cohere… el prompt diseñado está indicado por la flecha roja. En otras palabras, la instrucción dada al LLM; la entrada.

      Y debajo, marcado como salida, se ve el texto generado por Cohere:

      A continuación, el texto generado por Cohere se copia en el clasificador de texto de IA de OpenAI. El resultado del clasificador es que el texto debe considerarse probablemente generado por IA. Por tanto, correcto y de plena confianza.

      Texto generado a través de AI21Labs

      El mismo comando de generación se emitió en AI21Labs… pidiendo al LLM de AI21Labs que generara un texto sobre la importancia de la puntualidad.

      A continuación, el texto generado por AI21Labs se somete al clasificador de textos de IA de OpenAI, con la respuesta deseada. El resultado del clasificador es que el texto debe considerarse probablemente generado por IA. Por tanto, correcto con total confianza.

      Los textos generados en el AI21Labs Playground se envían aquí al clasificador de textos de IA de OpenAI.

      ChatGPT

      A continuación se muestra el contexto generado por ChatGPT… y es calificado como posible por el clasificador. Por lo tanto, se ve un paso más cerca de texto generado por humanos en comparación con Cohere y AI21Labs.

      Habría esperado que el clasificador dijera «generado por IA» con total confianza.

      Modelo OpenAI text-davinci-003

      También envié un texto de 500 palabras generado por text-davinci-003 sobre el tema de la puntualidad y recibí la misma respuesta de ChatGPT: Posiblemente generado por IA.

      Supuse que el clasificador sería capaz de detectar claramente el texto generado en text-davinci-003 o ChatGPT.

      Un ensayo de la Web

      He copiado un fragmento de un ensayo en línea, y el resultado del clasificador es ambicioso hasta cierto punto, pero bastante preciso.

      Mi propio escrito

      A continuación se muestra un artículo original que escribí sobre el mismo tema, que fue marcado por OpenAI como posiblemente generado por IA. Yo esperaría un resultado de «Poco claro si es generado por IA»

      Pero me apresuro a añadir que la pieza es corta, y como he dicho antes, la pieza es ambigua sin mucho texto definitivo.

      Wikipedia

      Teniendo en cuenta que el clasificador de texto de IA se entrenó en Wikipedia, copié un fragmento de Wikipedia sobre la Primera Guerra Mundial y le pedí al clasificador que investigara el contenido. Aquí obtuve la respuesta correcta, y también la clasificación más alta de muy improbable.

      ¿Puede ChatGPT detectar el origen de los textos?

      La respuesta corta es… sí.
      Los resultados son definitivos, y en mis pocos intentos, muy precisos:

      Y la respuesta sobre mi propio escrito también es correcta.

      Ten en cuenta

      Aparte de las cuestiones de precisión expuestas al principio de este artículo, existen otras limitaciones…

      ⏺ El texto y el tema que he utilizado como premisa para la redacción son muy genéricos y generales. Es muy probable que contenidos más ambiguos como éste sean más difíciles de clasificar.

      ⏺ Cuanto más largo sea el texto a analizar (> 1.0000 caracteres) más fiables serán los resultados.

      ⏺ Los textos escritos por humanos a veces se etiquetan incorrectamente como escritos por IA. Por tanto, parece que existe una especie de sesgo hacia una clasificación por defecto de «escrito por IA».

      ⏺ El clasificador es sólo inglés y no multilingüe.

      ⏺ El clasificador no es fiable a la hora de clasificar código.

      ⏺ El texto generado por IA y editado por un humano puede engañar al clasificador.

      Los datos

      OpenAI recopiló un conjunto de datos de texto generado por IA y texto escrito por humanos.
      El texto escrito por humanos tiene tres fuentes:

      • Conjunto de datos de Wikipedia
      • Conjunto de datos WebText recopilados en 2019
      • Conjunto de demostraciones humanas recogidas como parte del entrenamiento InstructGPT

      En conclusión

      Es evidente que la precisión del clasificador no está donde debería, y OpenAI declara este hecho abiertamente: «Nuestro clasificador no es totalmente fiable«.

      Sin embargo, hay algunos aspectos positivos… el primero es que se trata de un paso en la dirección correcta y se convertirá en una herramienta de valor incalculable, especialmente para educadores e instituciones educativas.

      La IA responsable siempre ha estado en el punto de mira de la mayoría de la gente, y OpenAI ha sido muy abierto sobre su enfoque y diligencia debida en relación con la IA responsable.

      Teniendo en cuenta todo esto, el clasificador es un paso en la dirección correcta y otro ejemplo de cómo OpenAI toma la iniciativa.

      The post Probando el nuevo clasificador de textos de OpenAI para identificar contenidos escritos con IA first appeared on Planeta Chatbot.

      ]]>
      https://desa.planetachatbot.com/probando-nuevo-clasificador-de-textos-de-openai-para-identificar-contenidos-escritos-con-ia/feed/ 0
      Generación de respuestas de OpenAI con un gran corpus de datos https://desa.planetachatbot.com/generacion-de-respuestas-de-openai-con-un-gran-corpus-de-datos/?utm_source=rss&utm_medium=rss&utm_campaign=generacion-de-respuestas-de-openai-con-un-gran-corpus-de-datos https://desa.planetachatbot.com/generacion-de-respuestas-de-openai-con-un-gran-corpus-de-datos/#respond Thu, 09 Feb 2023 06:00:42 +0000 https://desa.planetachatbot.com/?p=13455 Cualquier forma de contexto en la ingeniería de consultas es una referencia inestimable para generar una respuesta adecuada y precisa. Pero, ¿cómo dar cabida a una mayor cantidad de datos contextuales en una consulta generativa de OpenAI? Introducción Prompt Engineering for Generative LLMs ha surgido como una «cosa» con usuarios aprendiendo que un LLM no […]

      The post Generación de respuestas de OpenAI con un gran corpus de datos first appeared on Planeta Chatbot.

      ]]>
      Cualquier forma de contexto en la ingeniería de consultas es una referencia inestimable para generar una respuesta adecuada y precisa. Pero, ¿cómo dar cabida a una mayor cantidad de datos contextuales en una consulta generativa de OpenAI?

      Introducción

      Prompt Engineering for Generative LLMs ha surgido como una «cosa» con usuarios aprendiendo que un LLM no puede ser instruido directamente. Más bien, a través de un proceso de simulación e influencia del usuario, el LLM se diseña para dar la respuesta correcta, si tu quieres.

      Las instrucciones contextuales suelen constar de tres secciones: instrucción, contexto y pregunta.

      En un artículo anterior escribí sobre la importancia del contexto como referencia para los LLM generativos y cómo la alucinación de LLM puede ser negada por esto.

      Sin embargo, uno de los retos que surgieron del artículo anterior fue cómo se puede utilizar un cuerpo de texto más grande (corpus) como referencia contextual.

      De ahí que aquí recorra paso a paso el proceso de obtención de datos relevantes de Wikipedia sobre un tema concreto y su transformación. Creación de embeddings, y por último, cómo hacer referencia a los datos contextuales en una consulta.

      🌟 Sígueme en LinkedIn para actualizaciones sobre IA conversacional 🙂

      Embeddings

      El reto es que a medida que las implementaciones de OpenAI crecen en complejidad, la experiencia del usuario salta muy rápidamente de un entorno sin código a un entorno con código.

      Para poder buscar en un corpus más amplio relacionado con la información sobre olimpiadas que hemos estado utilizando, es necesario crear embeddings de texto.

      Las embeddings de texto de OpenAI miden la similitud semántica entre cadenas de texto.
      Las embeddings son relevantes siempre que sea necesario detectar cualquier tipo de similitud semántica. Por ejemplo, búsquedas, clasificaciones, agrupaciones, etc.

      En palabras de OpenAI:

      Un embedding es un vector (lista) de números en coma flotante. La distancia entre dos vectores mide su parentesco. Las distancias pequeñas sugieren un alto grado de parentesco y las distancias grandes, un bajo grado.

      OpenAI

      A continuación se muestra un fragmento del archivo de datos pertinente de Wikipedia…

      df = pd.read_csv('https://cdn.openai.com/API/examples/data/olympics_sections_text.csv')
      df = df.set_index(["title", "heading"])
      print(f"{len(df)} rows in the data.")
      df.sample(5)

      Y aquí puede ver el formato del archivo después de que se hayan creado las embeddings utilizando el modelo text-embedding-ada-002.

      datafile_path = '/olympics_sections_document_embeddings.csv'
      
      df = pd.read_csv(datafile_path)
      df.sample(5)

      El proceso de manipulación de datos y código es un proceso avanzado. Lea más sobre el aspecto de los datos y vea ejemplos de cuadernos aquí.

      El resultado final, a continuación se ve una pregunta formulada con el resultado relevante.

      Encontrarás toda la información en este enlace.

      En conclusión

      Para la búsqueda semántica, OpenAI ha abandonado su enfoque de búsqueda de documentos y lo ha sustituido por un embeddings model.

      Se ha hablado mucho de aprovechar los LLM y crear resultados más predecibles y fiables. Siempre he sostenido que la única solución es afinar los LLM y crear modelos LLM personalizados para cada implementación específica.

      Desde la perspectiva de OpenAI, no existe un panel de control ni un estudio de diseño de NLU/NLG, y la recopilación, transformación e ingestión de datos requiere un desarrollo personalizado.

      Sin embargo, para lograr esto a escala, se requiere un enfoque de estudio sin código donde con una supervisión débil, los datos de entrenamiento no estructurados se pueden convertir en datos de NLU y NLG Design.

      🌟 Sígueme en LinkedIn para actualizaciones sobre IA conversacional 🙂

      The post Generación de respuestas de OpenAI con un gran corpus de datos first appeared on Planeta Chatbot.

      ]]>
      https://desa.planetachatbot.com/generacion-de-respuestas-de-openai-con-un-gran-corpus-de-datos/feed/ 0
      Cuatro tendencias en inteligencia artificial conversacional para 2023 https://desa.planetachatbot.com/cuatro-tendencias-en-inteligencia-artificial-conversacional-para-2023/?utm_source=rss&utm_medium=rss&utm_campaign=cuatro-tendencias-en-inteligencia-artificial-conversacional-para-2023 https://desa.planetachatbot.com/cuatro-tendencias-en-inteligencia-artificial-conversacional-para-2023/#respond Thu, 26 Jan 2023 06:00:44 +0000 https://desa.planetachatbot.com/?p=13379 El año 2022 fue testigo del lanzamiento de NLU con inmensas capacidades generativas junto con lo que se puede denominar medios sintéticos. También asistimos al auge de un nuevo campo llamado Ingeniería de Prompt y de la disciplina del Diseño de NLU. En este artículo considero cuatro tendencias en inteligencia artificial conversacional y las implementaciones […]

      The post Cuatro tendencias en inteligencia artificial conversacional para 2023 first appeared on Planeta Chatbot.

      ]]>
      El año 2022 fue testigo del lanzamiento de NLU con inmensas capacidades generativas junto con lo que se puede denominar medios sintéticos. También asistimos al auge de un nuevo campo llamado Ingeniería de Prompt y de la disciplina del Diseño de NLU. En este artículo considero cuatro tendencias en inteligencia artificial conversacional y las implementaciones prácticas de la tecnología CAI que verán avances en su aplicación práctica.

      Las cuatro tendencias a tener en cuenta en 2023 son:

      1⃣ Capacidades generativas de los grandes modelos lingüísticos o Large Language Models (LLM).
      2⃣ Diseño de NLUs que cierran la brecha de datos en los LLMs.
      3⃣ Adopción de robots de voz y tecnologías afines.
      4⃣ Mayor fragmentación a través de la implantación de nichos de mercado.
      🌟 ¡Sígueme en LinkedIn para otras novedades relacionadas con la IA Conversacional! 🙂

      1⃣ LLM generativos

      El número de LLM está aumentando en tamaño y capacidades generativas. Aunque las capacidades generativas gráficas de los LLM están aumentando, es la implementación práctica de las capacidades de generación de texto lo que hará que el uso de los LLM se generalice. Especialmente las implementaciones en Chatbots y Voicebots.

      Durante 2022 HumanFirst anunció la integración con el LLM Cohere y otros LLMs. Yellow AI anunció DynamicNLP que aprovecha los LLMs, añadiendo a esta lista Oracle Digital Assistant y Amelia.

      Relacionado con los LLM y la generación de lenguaje está KI-NLP. Meta AI acuñó el término Knowledge Intensive NLP (KI-NLP). KI-NLP es la noción en la que se aprovecha un LLM para responder a preguntas generales de dominio abierto de forma conversacional. El usuario puede definir el formato de las respuestas, ya sea resumido, extenso, simplificado, etc.

      ChatGPT es la implementación más reciente de un sistema KI-NLP en el que los usuarios pueden formular preguntas de dominio general. La API lingüística de OpenAI es excelente para responder a preguntas generales.

      inteligencia artificial

      Teniendo en cuenta los esfuerzos de Google en el espacio LLM, recientemente esta compañía anunció su modelo PaLM mientras que LaMDA sólo está disponible en una vista previa muy limitada.

      Aquí es donde OpenAI realmente se diferencia, haciendo que sus modelos como ChatGPT estén ampliamente disponibles para pruebas y comentarios. Especialmente con el lanzamiento del nuevo modelo Da Vinci hubo una excepcional cobertura boca a boca.

      🌟 ¡Sígueme en LinkedIn Para Actualizaciones De IA Conversacional! 🙂

      2⃣ Diseño de NLU

      El concepto de cerrar la brecha de datos entre los LLM generativos y predictivos fue articulado recientemente por Alexander Ratner en un post de LinkedIn.

      La funcionalidad de los LLM puede dividirse en dos categorías principales: generativa y predictiva.
      Las intenciones o la determinación de la intención de los enunciados del usuario (clasificación de enunciados del usuario) pueden considerarse una implementación de un enfoque predictivo.

      Al considerar la predicción LLM (clasificación), un aspecto viene a la mente… ¡la brecha de datos! Para que los modelos predictivos sean precisos, es necesario un nivel de ajuste fino del LLM; este proceso aborda el problema que algunos denominan brecha de datos.

      Los modelos generativos funcionan con un enfoque de aprendizaje de pocos disparos y la preparación de los datos de entrenamiento no es tan crucial como en el caso de un modelo predictivo.

      Para las aplicaciones predictivas, la preparación de los datos es clave, ya que los datos no estructurados se convierten en datos de entrenamiento o datos de diseño NLU.

      Puedes leer más sobre un ejemplo práctico de puesta a punto de un NLU aquí. Este es un ejemplo en el que se utiliza el diseño NLU para convertir datos no estructurados en datos de entrenamiento NLU estructurados para un LLM.

      3⃣ Voicebots

      Dos cosas que destacaron de 2022 son la necesidad de obtener valor de las implementaciones de IA junto con la automatización en el centro de contacto.

      Los clientes siguen prefiriendo llamar por teléfono a los call centers y el santo grial de la IA conversacional es automatizar estas llamadas entrantes.

      Durante la cumbre Modev Voice’22 en Arlington se hizo evidente que el foco se está alejando de las interfaces de voz dedicadas como Alexa y Google Home para centrarse significativamente en la automatización de voz en los call centers.

      Un primer paso hacia las llamadas de voz totalmente automatizadas es descubrir y analizar las llamadas de voz grabadas. De ahí que las grabaciones de los clientes se conviertan en texto para la detección de intenciones y mucho más.

      Otro elemento que alimenta la futura adopción masiva de voicebots son tecnologías como las voces de síntesis de voz personalizadas rápidas sin código, la creación de voces protésicas, las traducciones de idiomas de voz a voz, entre otras cuestiones.

      4⃣ Mayor fragmentación

      Como he mencionado antes, de la investigación de Gartner se desprende que no se obtiene valor en la mayoría de las implementaciones cuando se trata de IA conversacional. Una forma de remediar este problema es limitar la huella de la implementación de la CAI. Por lo tanto, hay que empezar con una implantación pequeña e iterar a partir de esta implantación inicial.

      Un segundo enfoque consiste en considerar los 18 casos de uso del Call center y optar por implantar la tecnología de IA en uno o sólo unos pocos de los casos de uso. En el nuevo año veremos cómo más empresas adoptan uno o varios de estos casos de uso como primera incursión en la IA conversacional.

      La implantación de casos de uso específicos es más rentable y fácil de gestionar. Estos casos de uso específicos pueden extenderse después a otras áreas de la empresa.

      The post Cuatro tendencias en inteligencia artificial conversacional para 2023 first appeared on Planeta Chatbot.

      ]]>
      https://desa.planetachatbot.com/cuatro-tendencias-en-inteligencia-artificial-conversacional-para-2023/feed/ 0
      Reconocimiento automático del habla y auge de la inteligencia sonora https://desa.planetachatbot.com/reconocimiento-automatico-del-habla-y-auge-de-la-inteligencia-sonora/?utm_source=rss&utm_medium=rss&utm_campaign=reconocimiento-automatico-del-habla-y-auge-de-la-inteligencia-sonora https://desa.planetachatbot.com/reconocimiento-automatico-del-habla-y-auge-de-la-inteligencia-sonora/#respond Tue, 03 Jan 2023 06:00:06 +0000 https://desa.planetachatbot.com/?p=13229 El reconocimiento automático de voz (ASR) también se conoce como conversión de voz a texto (STT). ASR es el proceso de transcripción de audio a texto, que puede ser de naturaleza síncrona o asíncrona. La transcripción síncrona suele utilizarse en aplicaciones como los robots de voz y los escenarios de asistencia a agentes. Las asíncronas […]

      The post Reconocimiento automático del habla y auge de la inteligencia sonora first appeared on Planeta Chatbot.

      ]]>
      El reconocimiento automático de voz (ASR) también se conoce como conversión de voz a texto (STT). ASR es el proceso de transcripción de audio a texto, que puede ser de naturaleza síncrona o asíncrona.

      La transcripción síncrona suele utilizarse en aplicaciones como los robots de voz y los escenarios de asistencia a agentes.

      Las asíncronas se utilizan para transcribir a posteriori conversaciones entre clientes y agentes u otras interacciones de voz. La redacción de la PII entra en juego tanto para el audio como para el texto y, especialmente, la redacción automatizada de la PII.

      La ASR es la primera línea de defensa cuando se trata de la implementación de un robot de voz o de voz, y también es uno de los aspectos más difíciles de conseguir para una implementación de voz sincrónica y de baja latencia.

      ASR extractiva

      La ASR extractiva es aquella en la que el audio se transcribe a texto para su posterior procesamiento, normalmente NLP o NLU.

      Elementos clave de la ASR extractiva:

      ▪ Detección de lenguaje a partir del habla

      Esto es vital en el enrutamiento de clientes, la actualización de datos CRM y más. La detección del lenguaje depende y a menudo se ve obstaculizada por la falta de disponibilidad de un modelo para ese lenguaje humano concreto.

      En la mayoría de los casos, los modelos disponibles para la detección del lenguaje son superiores a los de transcripción/extracción. Por lo tanto, ser capaz de detectar el idioma puede informar al proceso de CX si un usuario en particular debe ser dirigido a un agente específico del idioma.

      Una solución como Deepgram tiene más de 32 idiomas disponibles para la detección de idiomas.
      Los servicios cognitivos de Microsoft Azure ofrecen detección de idiomas para más de 46 idiomas y muchos más locales.

      Un ejemplo de detección de idiomas en la zona de juegos de NeuralSpace.

      ▪ Transcripción de idiomas a partir del habla

      Una solución como la de Microsoft admite actualmente 139 idiomas para la transcripción de audio a texto.

      Un elemento clave de la ASR es la capacidad de ajustarse a implementaciones regionales específicas para dar cabida a la representación de la edad, el sexo, la etnia, los acentos regionales, los nombres y la terminología específicos de productos e industrias.

      No puedo dejar de mencionar Whisper, el modelo ASR de código abierto de OpenAI. Las consideraciones para utilizar Whisper son:

      • Coste de alojamiento, procesamiento, resistencia de la API… y la lista continúa.
      • Whisper sólo está pensado para un uso asíncrono.
      • El ajuste fino no está contemplado y la tasa de error de palabra (WER) fuera de los 5 idiomas principales no está lista para la producción.

      ▪Transcripción asíncrona

      La transcripción asíncrona tiene numerosos casos de uso, uno de ellos es la creación de datos de entrenamiento NLU a partir de conversaciones con clientes. La mayoría de las organizaciones disponen de grandes cantidades de grabaciones de clientes que pueden transcribirse sin conexión y utilizar el texto para el diseño y la optimización de NLU.

      ASR generativo

      La extracción generativa es una función disponible en la mayoría de los ASR, y crecerá con la llegada de los grandes modelos lingüísticos (LLM).

      La ASR generativa es el proceso de utilizar la PNL para mejorar el texto de salida y hacerlo más consumible para procesos como la NLU, la PNL o simplemente la inteligibilidad humana al leer el texto.

      Algunos ejemplos del paso generativo en ASR:

      ▪Puntuación y numeración

      Una de las funciones generativas más utilizadas en ASR es la adición de signos de puntuación y números, también denominada normalización inversa del texto (ITN). Esta función hace que el texto sea más legible y fácil de usar.

      Especialmente en los casos en los que el discurso del usuario se transmite a la pantalla del agente y, posteriormente, se envía a un robot de asistencia al agente.

      La adición de signos de puntuación puede ayudar a realizar un paso alto de NLP antes del procesamiento NLU, especialmente en el caso de la detección de los límites de las frases. La detección de los límites de las frases es útil para dividir los enunciados verbosos de los usuarios en segmentos más pequeños para el procesamiento NLU. También ayuda a detectar intenciones múltiples y a desambiguar eficazmente al usuario.

      ⬆ Este ejemplo de añadir puntuación y NIT es de Deepgram.

      ▪ Texto generativo basado en la fuente

      Se trata del proceso de optimización del texto extraído basado en un modelo específico.
      Por ejemplo, con Deepgram, hay varios modelos disponibles para optimizar el texto extraído en función de la fuente de audio. Por ejemplo, los modelos específicos del caso de uso o de la fuente de audio son:

      • General,
      • Reunión,
      • Llamada telefónica,
      • Buzón de voz,
      • Modelo de vocabulario financiero,
      • Optimización de audio y vídeo
      • Voicebots.

      ▪Tareas relacionadas con LLM

      Otras tareas generativas que pueden realizarse con el texto transcrito son el resumen, la extracción de entidades con nombre, la moderación de contenidos y la extracción de frases clave, entre otras.

      Algunos proveedores de ASR permiten definir intenciones y entidades dentro de su solución ASR, por lo que estamos asistiendo a un estrecho acoplamiento de ASR y NLU.

      Como ya he dicho antes, tener una buena WER ayuda a aliviar parte de la presión sobre el modelo NLU.

      Los datos de entrenamiento NLU pueden utilizarse para crear y entrenar un modelo de ajuste fino basado en texto para el ASR. Esto va más allá de un modelo acústico basado en audio para el ASR.

      Como se ha visto anteriormente, los LLM no suponen una amenaza para los proveedores de ASR como Deepgram… en su lugar, es una vía para aprovechar la potencia de ese LLM en particular.

      Otro ejemplo es la integración de HumanFirst con el LLM Cohere, que permite a los usuarios aprovechar Cohere desde un espacio latente acelerado sin código para el diseño de NLU.

      En conclusión

      La voz y el audio serán cada vez más importantes desde el punto de vista de la CCAI y la CAI.
      Especialmente debido al hecho de que ASR es una tecnología habilitadora para numerosos casos de uso de CCAI.

      Debido a la especialización de la tecnología ASR, los marcos tradicionales de desarrollo de chatbots se ven obligados a buscar fuera socios y proveedores de soluciones de voz.

      Las empresas de ASR también tienen una capacidad única para ampliar su huella y su propuesta de valor mediante el aprovechamiento de los LLM y la entrega de la propuesta de valor única de los LLM.

      Y, por último, las empresas tradicionales de ASR pueden aumentar drásticamente el valor de sus datos de salida si se adentran en las funciones NLP y NLU a través de lo que podría denominarse ASR generativo.

      Landscape de la tecnología de voz

      Actualmente soy el Evangelista Jefe @HumanFirst. Exploro y escribo sobre todos los campos relacionados con la intersección de la IA y el lenguaje; que van desde LLMs, Chatbots, Voicebots, Marcos de Desarrollo, Data-Centric espacios latentes y más.

      The post Reconocimiento automático del habla y auge de la inteligencia sonora first appeared on Planeta Chatbot.

      ]]>
      https://desa.planetachatbot.com/reconocimiento-automatico-del-habla-y-auge-de-la-inteligencia-sonora/feed/ 0
      El estado actual de la IA conversacional https://desa.planetachatbot.com/el-estado-actual-de-la-ia-conversacional/?utm_source=rss&utm_medium=rss&utm_campaign=el-estado-actual-de-la-ia-conversacional https://desa.planetachatbot.com/el-estado-actual-de-la-ia-conversacional/#respond Thu, 22 Dec 2022 06:00:38 +0000 https://desa.planetachatbot.com/?p=13152 ¿Cuál es el problema? En la actualidad, la IA conversacional se centra excesivamente en el diseño de conversaciones con diálogos de varios turnos. Al mismo tiempo, se descuidan elementos como la cola larga de la distribución de intenciones, junto con el diseño NLU. A estos problemas hay que añadir el enfoque aislado de la IA […]

      The post El estado actual de la IA conversacional first appeared on Planeta Chatbot.

      ]]>
      ¿Cuál es el problema?

      En la actualidad, la IA conversacional se centra excesivamente en el diseño de conversaciones con diálogos de varios turnos. Al mismo tiempo, se descuidan elementos como la cola larga de la distribución de intenciones, junto con el diseño NLU.

      A estos problemas hay que añadir el enfoque aislado de la IA conversacional, la CCAI y la CX dentro de las empresas.

      Otro problema son los proveedores verticales que intentan abordar todos los requisitos de la IA conversacional empresarial.

      La luz en el horizonte es la aparición de la fragmentación del mercado, que es donde las organizaciones están adoptando las mejores herramientas de su clase para abordar los requisitos de la CAI. La fragmentación se perpetúa con la introducción de casos de uso de CAI y robots de voz.

      El diseño de NLU también está surgiendo como metodología para la práctica astuta de datos y para detectar eficazmente señales dentro de las conversaciones existentes con los clientes, y convertir esas señales en datos de entrenamiento de NLU. El NLU Design puede considerarse un proceso acelerado de detección y gestión inteligente de intenciones.

      Al convertir las conversaciones no estructuradas con los clientes en datos de formación de NLU, se puede establecer un proceso sostenible en el que las intenciones de los clientes informen la hoja de ruta de CX.

      Factores de fragmentación del mercado

      La siguiente imagen muestra un desglose del panorama actual de la tecnología de IA conversacional. Ten en cuenta que este desglose ni siquiera incluye CCAI, ASR y síntesis de voz. El ASR y la síntesis de voz son, obviamente, dos requisitos vitales para los agentes digitales habilitados para voz.

      Sin embargo, lo que es evidente es la fragmentación del mercado y la aparición de las mejores herramientas horizontales para el éxito empresarial.

      La abstracción de la capa de mensajería del chatbot para mejorar el diseño de las respuestas contribuye a la fragmentación. Y los Large Language Models (LLM), que están popularizando el texto generativo para las respuestas de los bots. Los LLM también están desempeñando un papel clave en la automatización de la redacción de PII.

      Multimodalidad y orquestación

      La orquestación se convertirá en una capacidad crítica por varias razones.

      Una de ellas es la capacidad de aprovechar al máximo el esfuerzo existente en chatbot para acelerar la habilitación por voz de los asistentes digitales.

      En segundo lugar, la multimodalidad se verá impulsada por la idea de que los diálogos multigiro no son la solución a todas las intenciones de los clientes. Cada conversación tendrá que personalizarse en función del medio, la modalidad y los componentes conversacionales disponibles.

      A este respecto, considera las siguientes intenciones de los clientes y cómo funcionará mejor un enfoque multimodal:

      • Solicitar un cambio de asiento en un avión
      • Obtener indicaciones
      • Facturar un vuelo
      • Alquilar un coche
      • etc.

      NLU informará la hoja de ruta de CX

      El proceso de diseño NLU descubrirá señales importantes expresadas por los clientes, representantes de servicio, etc. a partir de datos conversacionales históricos y en tiempo real.

      El diseño de NLU produce invariablemente mejoras en la experiencia del cliente gracias a la información procesable, cualitativa y cuantitativa. Los resultados de este proceso son la mejora de la automatización, la personalización, el éxito de la atención al cliente y los datos para las funciones impulsadas por IA.

      La CCAI y los robots de voz mejorarán drásticamente

      Con la atención que se presta actualmente a la CCAI y los robots de voz, la experiencia del usuario va a mejorar drásticamente. Los proveedores de tecnología se están centrando en elementos que potencien la CCAI y los robots de voz.

      La innovación en el reconocimiento avanzado del habla (ASR) está resolviendo impedimentos que parecían insalvables en el pasado, como la calidad de la voz telefónica, la multiplicidad de interlocutores, el ruido de fondo, etc.

      En el pasado, la adopción del ASR y la síntesis de voz se veía gravemente obstaculizada por la escasa representación de lenguas minoritarias, acentos regionales y locales. Esto se ha solucionado recientemente, sobre todo con Whisper y Microsoft.

      Panorama tecnológica de los chatbot y los bots de voz

      A modo de referencia, a continuación se muestran dos matrices tecnológicas que cubren las implementaciones de chatbot y voicebot.

      IA Conversacional

      Actualmente soy el Evangelista Jefe @ HumanFirst. Exploro y escribo sobre todas las cosas en la intersección de la IA y el lenguaje; que van desde LLMs, Chatbots, Voicebots, Marcos de Desarrollo, Data-Centric espacios latentes y más.

      The post El estado actual de la IA conversacional first appeared on Planeta Chatbot.

      ]]>
      https://desa.planetachatbot.com/el-estado-actual-de-la-ia-conversacional/feed/ 0