Создание и скачивание 3D-моделей
С помощью моделей GigaChat можно создавать 3D-модели в формате FBX на основе текстового описания. В этом разделе вы узнаете как генерировать и скачивать модели с помощью GigaChat API.
Генерация 3D-моделей
Чтобы сгенерировать модель, передайте в запросе POST /chat/completions встроенную функцию text2model3d и включить автоматический режим работы с функциями ("function_call": "auto"
).
При обнаружении подходящего сообщения, например «Сгенерируй 3D-модель шара», модель использует переданную функцию для генерации 3D-модели.
В отличие от создания изображений, наличие функции в массиве functions
обязательно для генерации 3D-моделей.
Подробнее о функциях GigaChat API — в разделе Обращение к встроенным функциям
Созданная модель сохраняется в хранилище, а ответ от API будет содержать div-блок с идентификатором файла data-model-id
:
<div data-model-id="e10675c7-4128-4dbf-9f68-b10876ac1951" fuse="true"/> Модель шара успешно создана. Представляю тебе реалистичный трехмерный шар.
Для скачивания файла используйте запрос GET /files/{file_id}/content.
Подробнее о хранилище файлов — в разделе Обработка файлов.
- cURL
- Python
- JS/TS
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": "user",
"content": "Сгенерируй 3D-модель шара"
}
],
"function_call": "auto",
"functions": [
{
"name": "text2model3d"
}
]
}'
Генерация с помощью SDK:
from gigachat import GigaChat
from gigachat.models import Chat, Messages, MessagesRole, Function
giga = GigaChat(
credentials="<ключ_авторизации>",
verify_ssl_certs=False,
# Повышение времени ожидания, так как создание модели — длительный процесс
timeout=200
)
payload = Chat(
messages=[Messages(role=MessagesRole.USER, content="Сгенерируй 3D-модель шара")],
function_call="auto",
functions=[
Function(name="text2model3d")
]
)
response = giga.chat(payload)
print (response)
Генерация с помощью партнерского пакета langchain-gigachat:
from langchain_gigachat.chat_models import GigaChat
from langchain_core.prompts import ChatPromptTemplate
llm = GigaChat(
credentials="<ключ_авторизациии>",
# Повышение времени ожидания, так как создание модели — длительный процесс
timeout=200
)
tools = [
{
"name": "text2model3d",
},
]
# Метод `bind_tools(tools=[], tool_choice="auto")` сообщает модели, что нужно использовать встроенные функции.
llm = llm.bind_tools(tools=tools, tool_choice="auto")
# Промпт для создания 3D-модели
prompt = ChatPromptTemplate.from_messages(
[
("user", """{topic}"""),
]
)
# Цепочка для создания 3D-модели
generate_3d_model_chain = prompt | llm
response = generate_3d_model_chain.invoke({"topic": "Сгенерируй 3D-модель шара"})
print(response)
Генерация с помощью SDK:
import { GigaChat } from 'gigachat';
import { Agent } from 'node:https';
const httpsAgent = new Agent({
rejectUnauthorized: false,
});
const giga = new GigaChat({
credentials: '<ключ_авторизации>',
timeout: 200
});
const resp = await giga.chat({
messages: [
{
role: "user",
content: "Сгенерируй 3D-модель шара",
},
],
functions: [
{"name": 'text2model3d',}
],
function_call: 'auto'
});
console.log(resp.choices[0]?.message.content);