paint-brush
100 días de IA, día 8: Experimentando con el kernel semántico de Microsoft usando GPT-4por@sindamnataraj
876 lecturas
876 lecturas

100 días de IA, día 8: Experimentando con el kernel semántico de Microsoft usando GPT-4

por Nataraj6m2024/01/31
Read on Terminal Reader

Demasiado Largo; Para Leer

Semantic Kernel es un SDK de código abierto de Microsoft que ayuda a los desarrolladores a crear aplicaciones de inteligencia artificial, incluidos chatbots, RAG, copilotos y agentes.
featured image - 100 días de IA, día 8: Experimentando con el kernel semántico de Microsoft usando GPT-4
Nataraj HackerNoon profile picture
0-item
1-item


¡Hola a todos! Soy Nataraj y, al igual que tú, me han fascinado los recientes avances de la inteligencia artificial. Al darme cuenta de que necesitaba estar al tanto de todos los avances que ocurrían, decidí embarcarme en un viaje personal de aprendizaje, ¡así nació 100 días de IA ! Con esta serie, aprenderé sobre los LLM y compartiré ideas, experimentos, opiniones, tendencias y aprendizajes a través de las publicaciones de mi blog. Puede seguir el viaje en HackerNoon aquí o en mi sitio web personal aquí . En el artículo de hoy, buscaremos construir un kernel semántico con la ayuda de GPT-4.


Semantic Kernel es un SDK de código abierto de Microsoft que ayuda a los desarrolladores a crear aplicaciones de inteligencia artificial, incluidos chatbots, RAG, copilotos y agentes. Es similar a lo que hace langchain. Probablemente podamos llamarlo la respuesta de Microsoft a langchain.


Está diseñado para hacer que el software existente sea extensible y fácil de exponer a funciones de IA. También está diseñado anticipando que las aplicaciones deseen actualizar sus modelos de IA a las últimas y mejores versiones con el tiempo.

Núcleo semántico


Aunque el espacio está evolucionando muy rápidamente, aquí hay algunas definiciones que se deben tener en cuenta a medida que exploramos el núcleo semántico.

  • Chat Bot: Chat sencillo con el usuario.
  • RAG: bot de chat simple pero basado en datos privados y en tiempo real.
  • Copilotos: destinados a ayudarnos lado a lado para realizar tareas recomendando y sugiriendo.
  • Agentes: Responden a estímulos con intervención humana limitada. Los agentes ejecutan tareas como enviar correos electrónicos y reservar entradas en nombre del usuario.

¿Cómo funciona el kernel semántico?

Para explicar cómo funciona Semantic Kernel, tomemos un ejemplo de cómo tomar un fragmento de texto y convertirlo en un tweet de 140 caracteres. Pero haremos esto usando Semantic Kernel. Hemos hecho un resumen similar en publicaciones anteriores aquí .


Usaré la biblioteca Python de Semantic Kernel, pero como Semantic Kernel fue creado por Microsoft, también puedes hacer esto en C#. Consulte la documentación pública de Microsoft sobre cómo hacer esto.

Paso 1: iniciar el kernel semántico

A continuación, iniciamos el núcleo semántico y configuramos su servicio de finalización de texto diciéndole que utilice el modelo gpt-4 de OpenAI como LLM para completar texto.

 import semantic_kernel as sk from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, OpenAIChatCompletion import os from IPython.display import display, Markdown import asyncio from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # read local .env file api_key = os.environ['OPENAI_API_KEY'] kernel = sk.Kernel() kernel.add_text_completion_service("openai", OpenAIChatCompletion("gpt-4",api_key)) print("Kernel Initiated")

Paso 2: comprender una función semántica:

En el mundo del kernel semántico, tenemos un concepto de función semántica que es diferente de una función nativa. Una función nativa son las funciones regulares que escribimos en cualquier lenguaje de programación. Las funciones semánticas son encapsulaciones de mensajes LLM repetibles que pueden ser orquestados por el kernel. Obtendrá una mejor idea de qué es la función semántica en el siguiente paso, donde escribiremos una.


Funciones nativas y semánticas


Paso 3: crea una función semántica

Aquí creamos un mensaje sk_prompt que resume la conexión en menos de 140 caracteres (ese es nuestro objetivo con este ejercicio). Luego pasamos el mensaje como entrada para crear una función semántica con el kernel y la tienda, lo que nos proporciona a cambio el objeto resumen_función que representa la función semántica que creamos y a la que se puede acceder repetidamente a través del kernel. Tenga en cuenta que cuando creamos una función semántica, utilizamos un mensaje de cliente y también brindamos información de configuración de LLM como max_tokens, temperatura, etc. Ahora regrese a la imagen anterior de funciones nativas versus funciones semánticas y tendrá más sentido.


 sk_prompt = """ {{$input}} Summarize the content above in less than 140 characters. """ summary_function = kernel.create_semantic_function(prompt_template = sk_prompt, description="Summarizes the input to length of an old tweet.", max_tokens=200, temperature=0.1, top_p=0.5) print("A semantic function for summarization has been registered.")

Paso 4: Usar la función semántica para resumir texto en un tweet de 140 caracteres.

Ahora creamos el texto que queremos resumir usando la variable sk_input y llamamos a la función semática a través del kernal y luego mostramos el resultado.

 sk_input = """ Let me illustrate an example. Many weekends, I drive a few minutes from my house to a local pizza store to buy a slice of Hawaiian pizza from the gentleman that owns this pizza store. And his pizza is great, but he always has a lot of cold pizzas sitting around, and every weekend some different flavor of pizza is out of stock. But when I watch him operate his store, I get excited, because by selling pizza, he is generating data. And this is data that he can take advantage of if he had access to AI. AI systems are good at spotting patterns when given access to the right data, and perhaps an AI system could spot if Mediterranean pizzas sell really well on a Friday night, maybe it could suggest to him to make more of it on a Friday afternoon. Now you might say to me, "Hey, Andrew, this is a small pizza store. What's the big deal?" And I say, to the gentleman that owns this pizza store, something that could help him improve his revenues by a few thousand dollars a year, that will be a huge deal to him. """ # using async to run the semantic function async def run_summary_async(): summary_result = await kernel.run_async(summary_function, input_str=sk_input) display(summary_result) asyncio.run(run_summary_async())


Aquí está el resultado que obtuve:


La IA puede analizar datos de ventas para ayudar al propietario de una pequeña pizzería a optimizar su stock, aumentando potencialmente sus ingresos anuales.


Semantic Kernel tiene más capacidades, como el uso de funciones semánticas y funciones nativas juntas, y está diseñado para crear aplicaciones de IA que sean potentes. Escribiré más sobre ellos en futuras publicaciones.


Eso es todo por el día 8 de 100 días de IA.


Escribo un boletín llamado Above Average donde hablo sobre los conocimientos de segundo orden detrás de todo lo que está sucediendo en la gran tecnología. Si estás en tecnología y no quieres ser promedio, suscríbete .


Sígueme en Twitter , LinkedIn o ** HackerNoon ** para obtener las últimas actualizaciones sobre 100 días de IA. Si está en tecnología, es posible que le interese unirse a mi comunidad de profesionales de la tecnología aquí .


Día anterior 7: ¿Cómo crear Chat-GPT para sus datos usando Langchain?