100 дней искусственного интеллекта, день 8: экспериментируем с семантическим ядром Microsoft с использованием GPT-4

100 дней искусственного интеллекта, день 8: экспериментируем с семантическим ядром Microsoft с использованием GPT-4

1 февраля 2024 г.

:::совет Привет всем! Я Натарадж, и, как и вы, я был очарован недавним прогрессом в области искусственного интеллекта. Понимая, что мне нужно быть в курсе всех происходящих событий, я решил начать личный путь обучения, таким образом 100 дней искусственного интеллекта родились! В этой серии я буду узнавать о LLM и делиться идеями, экспериментами, мнениями, тенденциями и технологиями. обучение через мои сообщения в блоге. Вы можете следить за этим путешествием на HackerNoon здесь или на моем личном веб-сайте < /em>здесь. В сегодняшней статье мы попытаемся создать семантическое ядро ​​с помощью GPT-4.

:::

Semantic Kernel — это SDK с открытым исходным кодом от Microsoft, который помогает разработчикам создавать приложения искусственного интеллекта, включая чат-ботов, RAG, Copilots и т. д. агенты. Это похоже на то, что делает langchain. Вероятно, мы можем назвать это ответом Microsoft на langchain.

Он предназначен для того, чтобы сделать существующее программное обеспечение расширяемым и легко доступным для использования функций искусственного интеллекта. Он также разработан с учетом того, что приложения со временем захотят обновлять свои модели ИИ до новейших и лучших версий.

Semantic Kernel

Хотя эта сфера развивается очень быстро, вот некоторые определения, которые следует учитывать при изучении семантического ядра.

  • Чат-бот: простой чат с пользователем.
  • RAG: Простой чат-бот, работающий в режиме реального времени. личные данные.
  • Вторые пилоты. Предназначены для совместной помощи нам в выполнении задач, рекомендуя & предлагаю.
  • Агенты: реагируют на стимулы с ограниченным вмешательством человека. Агенты выполняют такие задачи, как отправка электронных писем и бронирование билетов от имени пользователя.

Как работает семантическое ядро?

Чтобы объяснить, как работает семантическое ядро, давайте возьмем пример: мы возьмем фрагмент текста и преобразуем его в твит длиной 140 символов. Но мы сделаем это с помощью семантического ядра. Мы сделали аналогичное обобщение в предыдущих публикациях здесь.

Я буду использовать библиотеку семантического ядра Python, но, поскольку семантическое ядро ​​создано Microsoft, вы также можете сделать это и на C#. О том, как это сделать, читайте в общедоступной документации Microsoft.

Шаг 1. Запустите семантическое ядро

Ниже мы запускаем семантическое ядро ​​и настраиваем его службу завершения текста, сообщая ему использовать модель OpenAI gpt-4 в качестве LLM для завершения текста.

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")

Шаг 2. Понимание семантической функции:

В мире семантического ядра существует концепция семантической функции, которая отличается от собственной функции. Нативная функция — это обычные функции, которые мы пишем на любом языке программирования. Семантические функции представляют собой инкапсуляцию повторяющихся подсказок LLM, которые могут управляться ядром. Вы получите лучшее представление о том, что такое семантическая функция, на следующем этапе, когда мы ее напишем.

Native & Semantic Functions

Шаг 3. Создайте семантическую функцию

Здесь мы создаем приглашение sk_prompt, в котором суммируется соединение длиной менее 140 символов (это наша цель в этом упражнении). Затем мы передаем приглашение в качестве входных данных для создания семантической функции с ядром и хранилищем, которое взамен дает нам объект summary_function, который представляет созданную нами семантическую функцию и к которому можно повторно обращаться через ядро. Обратите внимание, что при создании семантической функции мы используем подсказку клиента, а также предоставляем информацию о конфигурации LLM, такую ​​​​как max_tokens, температура и т. д.. Теперь вернитесь к предыдущему изображению собственных и семантических функций, и это сделает больше смысла.

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.")

Шаг 4. Использование семантической функции для объединения текста в твит длиной 140 символов.

Теперь мы создаем текст, который хотим суммировать, используя переменную sk_input, вызываем сематическую функцию через ядро ​​и затем отображаем результат.

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())

Вот результат, который я получил:

ИИ может анализировать данные о продажах, чтобы помочь владельцу небольшой пиццерии оптимизировать свои запасы, потенциально увеличивая годовой доход.

Семантическое ядро ​​имеет больше возможностей, таких как использование семантических функций и amp; Native функционирует совместно и предназначен для создания мощных приложений искусственного интеллекта. Подробнее о них я напишу в следующих постах.

Вот и все, что касается восьмого дня программы «100 дней искусственного интеллекта».

Я пишу информационный бюллетень под названием «Выше среднего», в котором рассказываю об идеях второго порядка, стоящих за всем, что происходит в больших технологиях. Если вы разбираетесь в технологиях и не хотите быть средним, подпишитесь на нее.

Следуйте за мной в Twitter, LinkedIn или HackerNoon для получения последних обновлений о 100 днях ИИ. Если вы работаете в сфере технологий, возможно, вам будет интересно присоединиться к моему сообществу технических специалистов здесь< /strong>.

Предыдущий день 7. Как создать Chat-GPT для вашего Данные с использованием Langchain?


Оригинал