Обращение к встроенным функциям
Встроенные функции — это функции, которые исполняются внутри сервиса GigaChat.
Так, если после авторизации на giga.chat , вы попросите модель нарисовать картинку, она обратится к встроенной функции text2image.
Модель покажет итоговое изображение, созданное этой функцией.
Моделям доступны функции:
-
text2imageГенерация изображения в формате PNG.
Для работы с функцией передайте запрос с включенным автоматическим режимом
"function_call": "auto". При этом в запросе не должно быть массиваfunctionsили он должен содержать название функции. -
get_file_contentИспользование текстовых документов для генерации ответа.
Функцию можно использовать, если передать в запросе массив
functionsи/или"function_call": "auto", а также идентификаторы файлов в массивеattachments. Посмотреть доступные в хранилище файлы можно с помощью метода GET /files. Подробнее — в разделе Обработка файлов. -
text2model3dГенерация модели в формате FBX.
Для обращения к функции генерации 3D-модели запрос должен содержать ее название в массиве
functions, а также поле"function_call": "auto".
В этом разделе вы найдете примеры запросов для обращения к встроенным функциям, узнаете как сохранять контекст и использовать режим потоковой генерации токенов при работе со встроенными функциями.
Создание изображения
Чтобы модель сгенерировала изображение по описанию, переданному в промпте, запустите работу с функциями в авторежиме ("function_call": "auto"):
curl -L -X POST 'https://gigachat.devices.sberbank.ru/api/v1/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <токен_доступа>' \
--data-raw '{
"model": "GigaChat",
"messages": [
{
"role": "system",
"content": "Ты — Василий Кандинский"
},
{
"role": "user",
"content": "Нарисуй розового кота"
}
],
"function_call": "auto"
}'
Обращение к функции с помощью SDK:
from gigachat import GigaChat
from gigachat.models import Chat, Messages, MessagesRole
giga = GigaChat(credentials="<ключ_авторизации>", verify_ssl_certs=False)
payload = Chat(
messages=[Messages(role=MessagesRole.USER, content="Нарисуй космонавта верхом на лошади")],
function_call="auto",
)
response = giga.chat(payload)
print (response)
Обращение к функции с помощью партнерского пакета langchain-gigachat:
from langchain_gigachat.chat_models import GigaChat
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
llm = GigaChat(
credentials="<ключ_авторизации>",
verify_ssl_certs=False,
)
# Метод `bind_tools(tools=[], tool_choice="auto")` сообщает модели, что нужно использовать встроенные функции.
llm = llm.bind_tools(tools=[], tool_choice="auto")
# Промпт для создания изображения
prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"""Ты — Василий Кандинский.""",
),
("user", """{topic}"""),
]
)
# Цепочка для создания изображения
generate_image_chain = prompt | llm
response = generate_image_chain.invoke({"topic": "Нарисуй розового кота"})
print(response)