Всем привет! Я Натарадж , и, как и вы, я очарован недавним прогрессом в области искусственного интеллекта. Понимая, что мне нужно быть в курсе всех происходящих событий, я решил отправиться в личный путь обучения, так родились 100 дней ИИ ! В этой серии я буду узнавать о LLM и делиться идеями, экспериментами, мнениями, тенденциями и знаниями в своих сообщениях в блоге. Вы можете следить за этим путешествием на HackerNoon здесь или на моем личном сайте здесь . В сегодняшней статье мы рассмотрим создание семантического ядра с помощью GPT-4.
Если вы читаете серию «100 дней ИИ», я пишу общую тему, и вы заметите, что в большинстве постов есть своего рода эксперимент или демонстрация. В конце постов я также перечисляю идеи, которые возможны с помощью изученных мной технологий. Итак, следующий очевидный вопрос: есть ли способ легко превратить эти эксперименты в демонстрируемые продукты, поделиться ими с людьми и получить обратную связь?
В этом посте мы рассмотрим, как легко преобразовать эксперимент с ИИ в демо-версию и получить обратную связь.
Допустим, вы хотите создать приложение искусственного интеллекта, которое принимает текст и возвращает сводку. И вы хотите поделиться этим с людьми и получить обратную связь. Если вам нужно создать веб-приложение для этого приложения, вам нужно написать код пользовательского интерфейса, убедиться, что вы нашли решение для хостинга, и выяснить, каким будет весь стек. Конечно, существуют готовые стеки веб-приложений, которые позволят делать это быстрее, но для вашего варианта использования вся эта сложность не нужна. Вместо этого мы будем использовать Gradio, который создаст интерфейс, похожий на веб-приложение, без написания кода для этого приложения.
Gradio — это библиотека Python, которая позволяет вам легко создавать демо-версии ваших приложений AI и делиться ими с аудиторией в виде веб-приложения.
Чтобы понять, как легко продемонстрировать эксперимент с искусственным интеллектом поколения с помощью Gradio, мы создадим веб-приложение для суммирования, в котором вы можете предоставить приложению длинный текст, и приложение выведет сводку этого длинного текста.
Наряду с Gradio мы будем использовать приложение «Обнимающее лицо», поэтому, чтобы следовать инструкциям, убедитесь, что вы держите ключ API «Обнимающее лицо» под рукой. Для начала давайте загрузим ключ API из файла .env и добавим необходимые модули Python.
import os import io from IPython.display import Image, display, HTML #from PIL import Image import base64 import openai env_path = '../.env' from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv(env_path)) # read local .env file hf_api_key = os.environ['HF_API_KEY']
Основная логика того, чего мы хотим достичь, — отправить длинный текст в модель и получить краткое изложение текста. Мы определим функцию, которая принимает длинный текст в качестве входных данных и вызывает модель обнимающего лица под названием distilbart . Вот функция для этого.
def get_completion(inputs, parameters=None, ENDPOINT_URL=os.environ['HF_API_SUMMARY_BASE']): headers = { "Authorization": f"Bearer {hf_api_key}", "Content-Type": "application/json" } data = { "inputs": inputs } if parameters is not None: data.update({"parameters": parameters}) response = requests.request("POST", ENDPOINT_URL, headers=headers, data=json.dumps(data) ) return json.loads(response.content.decode("utf-8"))
Основной способ взаимодействия с Gradio — через функцию интерфейса . Нам нужно передать функцию и соответствующие ей входные и выходные данные. Обратите внимание, что для этой цели мы определили новую функцию sum . Эта функция принимает входные данные, которые будут длинным текстом, который должен быть суммирован, и функция вызовет функцию get_completion из шага 2, чтобы получить сводку входного текста и вернуть ее в качестве выходных данных . В последней строке мы просим Gradio запустить демо-версию этого приложения. Указавshare =True, мы сообщаем Gradio создать общедоступную ссылку, которой можно будет поделиться с другими, а также указать server_port, на котором должен работать локальный веб-хост. В приведенном ниже коде мы также настраиваем заголовок, описание и метки полей ввода и вывода, которые вы заметите на выходе.
import gradio as gr def summarize(input): output = get_completion(input) return output[0]['summary_text'] gr.close_all() demo = gr.Interface(fn=summarize, inputs=[gr.Textbox(label="Text to summarize", lines=6)], outputs=[gr.Textbox(label="Result", lines=3)], title="Text summarization with distilbart-cnn", description="Summarize any text using the `shleifer/distilbart-cnn-12-6` model under the hood!" ) demo.launch(share=True, server_port=int(os.environ['PORT1']))
После того, как вы запустите это, вот как теперь будет выглядеть вывод в вашем браузере по адресу http://127.0.0.1:<номер вашего порта>.
Демонстрировать проект с помощью Gradio очень легко. Прелесть здесь в том, что вам, как разработчику, не нужно было придумывать стек пользовательского интерфейса и проходить через сложности изучения этого стека и внедрения его в производство. Градио сделает это за вас.
Gradio предлагает различные типы ввода и вывода, с помощью которых вы можете создавать более сложные и интересные демонстрации, которыми можно легко поделиться. В следующих статьях мы рассмотрим больше демонстраций с Gradio и другими инструментами.
Вот и все, что касается Дня 12 из 100 Дней ИИ.
Я пишу информационный бюллетень под названием «Выше среднего», в котором рассказываю об идеях второго порядка, стоящих за всем, что происходит в больших технологиях. Если вы разбираетесь в технологиях и не хотите быть средним, подпишитесь на него .
Следуйте за мной в Twitter , LinkedIn или HackerNoon , чтобы получать последние новости о 100 днях ИИ. Если вы работаете в сфере технологий, возможно, вам будет интересно присоединиться к моему сообществу технических специалистов здесь .