Este é um modelo de plugin Figma AI que demonstra o streaming de respostas LLM dentro de um plugin Figma. Este modelo mostra:
Este plugin está configurado para usar Next.js.
Primeiro crie este modelo usando create-next-app:
npx create-next-app@latest --example https://github.com/figma/ai-plugin-template/
Em seguida, você precisa armazenar sua chave de API OpenAI no arquivo .env.local
. Você pode obter uma chave de API na página de chaves de API. Crie um arquivo .env.local
na raiz deste projeto e adicione sua chave API:
OPENAI_API_KEY= ***
Em seguida, execute o servidor de desenvolvimento:
npm i
npm run dev
Você pode então abrir o aplicativo de desktop Figma e importar um plugin do arquivo de manifesto neste projeto. Você pode clicar com o botão direito na tela e navegar até Plugins > Development > Import plugin from manifest...
e selecionar manifest.json
em {path to this project}/plugin/manifest.json
.
Os principais arquivos que você deseja editar são:
app/page.tsx
: permitirá que você atualize o plugin iframe
. A página é atualizada automaticamente conforme você edita o arquivo e permite atualizar a interface do usuário do seu plugin.app/completion/route.ts
: Este é o "servidor" do plugin e é o que se comunica com o OpenAI. É aqui que você pode atualizar o prompt que está enviando para o GPT.plugin/manifest.json
: este é o arquivo de manifesto que permitirá atualizar as permissões e tipos de editor do seu plugin. Neste exemplo publicaremos o aplicativo Next.js no Vercel. Você também pode publicar em qualquer outro provedor de hospedagem que suporte Next.js.
OPENAI_API_KEY
como sua chave de API OpenAI.siteURL
do seu arquivo package.json
para apontar para o URL implantado. Será algo como https://your-site-here.vercel.app/
"config" : {
"siteURL" : " https://your-site-here.vercel.app/ "
}
npm run build
para criar a compilação de produção do seu plug-in que aponta para o URL implantado. Este modelo inclui um auxiliar figmaAPI
em @/lib/figmaAPI
que permite executar o código do plugin de dentro do iframe. Isso é útil para evitar a API postMessage do plugin iframe <-> e reduz a quantidade de código que você precisa escrever.
Exemplo:
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"
Algumas coisas a serem observadas sobre este ajudante: