Это шаблон плагина Figma AI, который демонстрирует потоковую передачу ответов LLM внутри плагина Figma. В этом шаблоне показано:
Этот плагин настроен на использование Next.js.
Сначала создайте этот шаблон с помощью create-next-app:
npx create-next-app@latest --example https://github.com/figma/ai-plugin-template/
Затем вам нужно сохранить ключ API OpenAI в файле .env.local
. Вы можете получить ключ API на странице ключей API. Создайте файл .env.local
в корне этого проекта и добавьте свой ключ API:
OPENAI_API_KEY= ***
Затем запустите сервер разработки:
npm i
npm run dev
Затем вы можете открыть настольное приложение Figma и импортировать плагин из файла манифеста в этом проекте. Вы можете щелкнуть правой кнопкой мыши по холсту и перейти к Plugins > Development > Import plugin from manifest...
и выбрать файл manifest.json
в {path to this project}/plugin/manifest.json
.
Основные файлы, которые вы захотите редактировать:
app/page.tsx
: позволит вам обновить плагин iframe
. Страница автоматически обновляется при редактировании файла и позволяет обновить пользовательский интерфейс вашего плагина.app/completion/route.ts
: это «сервер» плагина, который взаимодействует с OpenAI. Здесь вы можете обновить приглашение, которое вы отправляете в GPT.plugin/manifest.json
: это файл манифеста, который позволит вам обновить разрешения и типы редактора вашего плагина. В этом примере мы опубликуем приложение Next.js в Vercel. Вы также можете публиковать данные на любом другом хостинг-провайдере, поддерживающем Next.js.
OPENAI_API_KEY
для вашего ключа API OpenAI.siteURL
вашего файла package.json
, чтобы он указывал на развернутый URL-адрес. Это будет выглядеть примерно так: https://your-site-here.vercel.app/
"config" : {
"siteURL" : " https://your-site-here.vercel.app/ "
}
npm run build
, чтобы создать производственную сборку вашего плагина, указывающую на развернутый URL-адрес. Этот шаблон включает в себя помощник figmaAPI
по адресу @/lib/figmaAPI
, который позволяет запускать код плагина изнутри iframe. Это полезно, чтобы избежать API-интерфейса postMessage плагина iframe <-> и уменьшить объем кода, который вам нужно написать.
Пример:
import { figmaAPI } from "@/lib/figmaAPI" ;
const nodeId = "0:2" ;
const result = await figmaAPI . run (
( figma , { nodeId } ) => {
return figma . getNodeById ( nodeId ) ?. name ;
} ,
// Any variable you want to pass to the function must be passed as a parameter.
{ nodeId } ,
) ;
console . log ( result ) ; // "Page 1"
Несколько замечаний об этом помощнике: