Este artículo es un seguimiento de otro que escribí recientemente sobre BlenderBot 3 donde doy una nueva mirada a BlenderBot 3 después del reciente alboroto de los medios. También en este artículo presento la forma más sencilla de crear tus propias instancias de BlenderBot con un ejemplo básico sobre el uso de la API de BlenderBot para crear un chatbot para Telegram Messenger.
Tabla de contenidos
El TL ; DR
Hay varias vías para interactuar con las diferentes versiones de BlenderBot:
La más fácil es ir al sitio web de BlenderBot (https://blenderbot.ai). Sin embargo, actualmente el acceso está restringido a los Estados Unidos.
También se puede interactuar con varias versiones de BlenderBot a través de tarjetas de modelo HuggingFace.
El siguiente paso es acceder a BlenderBot a través de una API de inferencia HuggingFace en un entorno de Notebook.
Y por último veo la creación de un bot básico de Telegram usando la API de Telegram que se sondea desde un entorno de Notebook.
Una visión general de BlenderBot
Ha habido una importante publicidad en los medios de comunicación sobre BlenderBot 3 y parte de la publicidad está exagerada y sacada de contexto.
En primer lugar, Meta AI afirma claramente que BlenderBot 3 es capaz de buscar en Internet para charlar sobre prácticamente cualquier tema, por lo que existe una alta probabilidad de que BlenderBot 3 pueda decir algo poco amable de los líderes tecnológicos, etc.
En segundo lugar, BlenderBot es un experimento para mezclar varios elementos de un agente conversacional en uno solo:
- Uso atractivo de la personalidad (PersonaChat)
- Uso atractivo del conocimiento (Mago de Wikipedia)
- Muestra de empatía (Empathetic Dialogues)
- Capacidad de mezclar las tres cosas a la perfección (BST)
En tercer lugar, la tecnología actual a menudo comenzó como un experimento rudimentario. Y así es como debe verse BlenderBot, un experimento de mezcla de diferentes elementos conversacionales en uno solo.
En la IA conversacional existe un equilibrio entre el control y la flexibilidad. Cuanto más granular sea el control y el ajuste, la flexibilidad disminuirá invariablemente.
Por otro lado, como en el caso de BlenderBot, la flexibilidad es inmensa. Pero el control y el ajuste fino están ausentes y a menudo se plantea la cuestión de cómo se aprovechará una tecnología como BlenderBot para una implementación de dominio específico, aparte de que BlenderBot se convierta en un asistente digital de dominio general/amplio.
BlenderBot tampoco es un monolito de una tecnología, ha habido tres iteraciones, y hay numerosas versiones de BlenderBot entrenadas en diferentes parámetros. Y si el bot hace uso de la búsqueda en Internet para obtener información, hay una dimensión adicional de variabilidad.
La imprevisibilidad de las búsquedas en la web puede ser anulada por un concepto al que Meta AI se refiere como KI-NLP. Meta AI ha puesto en marcha Sphere y lo describe como un corpus a escala de la web que permite la PNL intensiva en conocimiento (KI-NLP).
HuggingFace
Con la API de inferencia de HuggingFace, puedes integrar aplicaciones a más de 20.000 modelos preentrenados o a tus propios modelos privados. Esto se puede hacer a través de una simple petición HTTP que es rápida y escala automáticamente.
A continuación se muestra la tarjeta del modelo en el sitio web HuggingFace que apunta a la API de inferencia. Hay diferentes versiones de BlenderBot entrenadas con diferentes parámetros.
La API de inferencia alojada puede ser consultada gráficamente a través de la vista de la tarjeta de modelo, como se ve a continuación.
Y aquí está el ejemplo de código más básico para ejecutar BlenderBot en un Notebook. Puedes ver lo fácil que es cambiar el tokenizador o el modelo:
!pip install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio===0.9.1 -f https://download.pytorch.org/whl/torch_stable.html
!pip install transformers
from transformers import BlenderbotTokenizer,
BlenderbotForConditionalGeneration
tokenizer = BlenderbotTokenizer.from_pretrained(«facebook/blenderbot-400M-distill»)
model = BlenderbotForConditionalGeneration.from_pretrained(«facebook/blenderbot-400M-distill»)
inputs = tokenizer(«I like to write about Conversational AI», return_tensors=»pt»)
inputs
res = model.generate(**inputs)
res
tokenizer.decode(res[0])
tokenizer.decode(inputs[‘input_ids’][0])
A continuación, la API de inferencia se combina con una sencilla rutina de dos diálogos integrados en la API de Telegram Messenger:
Por último, se puede acceder a BlenderBot desde Telegram y se recibe una respuesta.
Conclusión
Tengo un gran aprecio por lo que Meta AI está tratando de lograr con BlenderBot. Los marcos de desarrollo de Chatbot están segmentados en diferentes elementos como la mensajería, la gestión del diálogo, NLU, la búsqueda, las bases de conocimiento, etc.
Y BlenderBot está tratando de fusionar o mezclar estos elementos, e imitar una interacción de humano a humano lo más cerca posible.