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

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

к Nataraj6m2024/01/31
Read on Terminal Reader

Слишком долго; Читать

Семантическое ядро — это SDK с открытым исходным кодом от Microsoft, который помогает разработчикам создавать приложения искусственного интеллекта, включая чат-ботов, RAG, второго пилота и агентов.
featured image - 100 дней искусственного интеллекта, день 8: экспериментируем с семантическим ядром Microsoft с использованием GPT-4
Nataraj HackerNoon profile picture
0-item
1-item


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


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


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

Семантическое ядро


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

  • Чат-бот: Простой чат с пользователем.
  • 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, которые могут управляться ядром. Вы получите лучшее представление о том, что такое семантическая функция, на следующем этапе, когда мы ее напишем.


Нативные и семантические функции


Шаг 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())


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


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


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


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


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


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


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