Работа с ИИ
В ваших python файлах обработчиков вы можете взаимодействовать с ИИ и работать с текстом, языком и изображениями.
Текст
Генерация
Для генерации текста используете метод ai.generate_text(prompt) объекта app, где prompt - текст запроса.
def run(app):
poem = app.ai.generate_text('Напиши стих в стиле А.С. Пушкина.')
return poem
Класификация
Для класификации текста используете метод ai.classify(text, labels) объекта app, где text - текст, labels - массив меток.
| Параметр | Тип | Описание |
|---|---|---|
| text | Строка | Текст, который нужно класифицировать. |
| labels | Массив строк | Массив меток. |
Метод возвращает массив вещественных чисел от 0 до 1, размером равным размеру массива меток.
def run(app):
rating = app.ai.classify('В этом ресторане мне понравился сервис.', ['Положительно', 'Отрицательно'])
return 'Это положительный комментарий!' if rating[0] > rating[1] else 'Это отрицательный комментарий!'
Консолидирование
Для консолидирования(резюмирования) текста используете метод ai.consolidate(texts) объекта app, где texts - массив текстов.
Этот метод полезен, когда нужно объединить информацию из нескольких источников в один текст.
Возвращает сгенерированный текст на основе входных данных.
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.
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 - текст запроса.
Метод возвращает массив текстов из базы знаний, которые близки по смыслу к запросу.
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
Возможность Поиск в базе знаний доступна только если подключена Векторизация текста.
Возможность Поиск в базе знаний часто используется вместе с Генерацией текста.
Генерация данных по примеру
Для генерации объектов данных используете метод generate_data(system_prompt, promt_template, examples, input) объекта app.
| Параметр | Тип | Описание |
|---|---|---|
| system_prompt | Строка | Текст, который нужно класифицировать. |
| promt_template | Строка/Функция | Массив меток. |
| examples | Массив объектов приверов | Массив меток. |
| input | Строка/Объект | Массив меток. |
def run(app):
result = app.ai.generate_data(
'Ты ассистент, который пишет стихи в разных стилях.',
'Напиши стих в стиле %INPUT%.',
[
{'', ''},
{'', ''},
{'', ''},
], 'А.С. Пушкин')
return result
Выполнение команды
Для выполнения определённых python функций используете метод ai.chat(messages, functions) объекта app, где messages - массив сообщений, functions - массив python функций.
# Ваши функции
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 - файл с речью.
def run(app):
text = app.ai.recognize_speech(app.context_parameter('Файл с записью'))
app.notify(app.context_user, 'Вы сказали: ' + text)
Генерация
Для генерации файла с речью используете метод ai.generate_speech(text) объекта app, где text - текст.
def run(app):
speech_file = app.ai.generate_speech('Привет, мир!')
app.context_object.set('Звуковой файл', speech_file)
Изображения
Генерация
Для генерации файлов изображения используете метод ai.generate_image(promt) объекта app, где promt - описание изображения.
def run(app):
image_file = app.ai.generate_image('Кот верхом на слоне.')
app.context_object.set('Файл картинки', image_file)
Распознавание
Для распознования изображения используете метод ai.recognize_image(image_file) объекта app, где image_file - файл с картинкой.
Метод возвращает текстовое описание изображения.
def run(app):
image_description = app.ai.recognize_image(app.context_object.get('Файл картинки'))
app.notify(app.context_user, 'Описание изображения: ' + image_description)