Перейти к основному содержимому

Работа с ИИ

В ваших python файлах обработчиков вы можете взаимодействовать с ИИ и работать с текстом, языком и изображениями.

Текст

Генерация

Для генерации текста используете метод ai.generate_text(prompt) объекта app, где prompt - текст запроса.

scripts/generate_poem.py
def run(app):
poem = app.ai.generate_text('Напиши стих в стиле А.С. Пушкина.')
return poem

Класификация

Для класификации текста используете метод ai.classify(text, labels) объекта app, где text - текст, labels - массив меток.

ПараметрТипОписание
textСтрокаТекст, который нужно класифицировать.
labelsМассив строкМассив меток.

Метод возвращает массив вещественных чисел от 0 до 1, размером равным размеру массива меток.

scripts/rate_comment.py
def run(app):
rating = app.ai.classify('В этом ресторане мне понравился сервис.', ['Положительно', 'Отрицательно'])
return 'Это положительный комментарий!' if rating[0] > rating[1] else 'Это отрицательный комментарий!'

Консолидирование

Для консолидирования(резюмирования) текста используете метод ai.consolidate(texts) объекта app, где texts - массив текстов. Этот метод полезен, когда нужно объединить информацию из нескольких источников в один текст. Возвращает сгенерированный текст на основе входных данных.

scripts/consolidate_text.py
def run(app):
request = 'Как ухаживать за цветами?'
articles = app.ai.search_knowledge_base(request)
if len(articles) > 1:
answer = app.ai.consolidate(articles)
else:
answer = 'Данные не найдены.'
return answer

Чат

Для чата с ИИ используете метод ai.chat(messages) объекта app, где messages - массив сообщений.

В сообщениях у вас должны быть role и content. role может быть system, user или assistant.

Для создания системного сообщения используете {"role": "system", "content": "Текст сообщения"}.

Последним сообщением в массиве должно быть user сообщение.

Метод возвращает объект сгенерированного сообщения, содержащий role и content.

scripts/get_message_for_chat.py
def run(app):
messages = [
{"role": "system", "content": "Ты — эксперт по поэзии. Отвечай в литературном стиле."},
{"role": "user", "content": "Проанализируй стихотворение: «Уронили мишку на пол... Оторвали мишке лапу... Всё равно его не брошу — Потому что он хороший.»"},
{"role": "assistant", "content": "Агния Барто. Простые строки передают глубокую мысль о верности, не зависящей от изъянов. Мишка — символ безусловной любви."},
{"role": "user", "content": "Напиши стих о старом дневнике в этом стиле."}
]
generated_message = app.ai.chat(messages)
return generated_message['content']

Поиск в базе знаний

Если в вашем проекте используется база знаний(это задаётся в возможности роли), то вам доступен метод ai.search_knowledge_base(text) объекта app, где text - текст запроса.

Метод возвращает массив текстов из базы знаний, которые близки по смыслу к запросу.

scripts/get_answer_on_question.py
def run(app):
request = 'Как ухаживать за цветами?'
articles = app.ai.search_knowledge_base(request)
if len(articles) > 0:
answer = app.ai.generate_text('Напиши ответ на вопрос: ' + request + '. Используя эту информацию: ' + articles[0])
else:
answer = 'Данные не найдены.'
return answer
warning

Возможность Поиск в базе знаний доступна только если подключена Векторизация текста.

подсказка

Возможность Поиск в базе знаний часто используется вместе с Генерацией текста.

Генерация данных по примеру

Для генерации объектов данных используете метод generate_data(system_prompt, promt_template, examples, input) объекта app.

ПараметрТипОписание
system_promptСтрокаТекст, который нужно класифицировать.
promt_templateСтрока/ФункцияМассив меток.
examplesМассив объектов приверовМассив меток.
inputСтрока/ОбъектМассив меток.
scripts/generate_poem.py
def run(app):
result = app.ai.generate_data(
'Ты ассистент, который пишет стихи в разных стилях.',
'Напиши стих в стиле %INPUT%.',
[
{'', ''},
{'', ''},
{'', ''},
], 'А.С. Пушкин')
return result

Выполнение команды

Для выполнения определённых python функций используете метод ai.chat(messages, functions) объекта app, где messages - массив сообщений, functions - массив python функций.

scripts/execute_command.py

# Ваши функции
def get_weather(location: str, unit: str = "celsius"):
"""
Получить погоду в указанном месте

Args:
location: Город или местоположение, например: Москва, Лондон (required)
unit: Единица измерения температуры, по умолчанию "celsius", может быть "celsius" или "fahrenheit"

Returns:
weather_string (string): Строка с погодой
"""
# Здесь ваша логика получения погоды
return f"Погода в {location}: 25°{unit.upper()[0]}"

def set_reminder(text: str, date: str = None):
"""
Установить напоминание

Args:
text: Текст напоминания
date: Дата и время напоминания в формате "YYYY-MM-DD HH:MM"

Returns:
result (bool): True, если всё прошло успешно
"""
return f"Напоминание установлено: '{text}' на {date}"

def run(app):
messages = [
{"role": "system", "content": "You are a poetry expert"},
{"role": "user", "content": "Write a haiku about spring"},
{"role": "assistant", "content": "Cherry blossoms bloom..."}
{"role": "user", "content": "Cherry blossoms bloom..."}
]
response = app.ai.chat(messages, [get_weather, set_reminder])
return response['content']

Речь

Распознавание

Для распознования речи в текст используете метод ai.recognize_speech(speech_file) объекта app, где speech_file - файл с речью.

scripts/recognize_speech.py
def run(app):
text = app.ai.recognize_speech(app.context_parameter('Файл с записью'))
app.notify(app.context_user, 'Вы сказали: ' + text)

Генерация

Для генерации файла с речью используете метод ai.generate_speech(text) объекта app, где text - текст.

scripts/generate_speech.py
def run(app):
speech_file = app.ai.generate_speech('Привет, мир!')
app.context_object.set('Звуковой файл', speech_file)

Изображения

Генерация

Для генерации файлов изображения используете метод ai.generate_image(promt) объекта app, где promt - описание изображения.

scripts/generate_speech.py
def run(app):
image_file = app.ai.generate_image('Кот верхом на слоне.')
app.context_object.set('Файл картинки', image_file)

Распознавание

Для распознования изображения используете метод ai.recognize_image(image_file) объекта app, где image_file - файл с картинкой. Метод возвращает текстовое описание изображения.

scripts/recognize_image.py
def run(app):
image_description = app.ai.recognize_image(app.context_object.get('Файл картинки'))
app.notify(app.context_user, 'Описание изображения: ' + image_description)