Uma ferramenta de linha de comando para executar comandos GPT. Essa ferramenta suporta plugins de lotes de lotes, solicitações e chatgpt.
Use esta ferramenta para
Você precisará criar uma chave de API do OpenAI. Se você tiver uma conta, pode criar uma chave aqui
https://platform.openai.com/account/api-keys
Não compartilhe sua chave da API com outras pessoas ou exponha-a no navegador ou em outro código do lado do cliente. Você incorrerá em qualquer cobrança se alguém usar sua chave. Não verifique sua chave em nenhum repositório público.
Crie um arquivo que contenha sua chave da API (a abaixo não é real). Em nosso exemplo. Nomeamos o arquivo API_KEY e adicionamos a chave.
sk-gKtTxOumv4orO6cfWlh0ZK
Certifique -se de ter o DART instalado. Siga as instruções, no link abaixo.
https://dart.dev/Get-Dart
Após a instalação, você pode instalar o programa GPT com o seguinte comando
Dart Pub Global Activate GPT
A seguir estão os casos de uso suportados
Execute o comando Gerate Project
air genp
Você precisará primeiro selecionar o arquétipo
? Project Archetype ›
❯ Prompt
Chain
Batch
Image
ChatGPT Plugin
Digite o nome do projeto e o ProjectVersion
✔ Project Archetype · Prompt
✔ Project Name: · myproject
✔ Project Version: · 1.0
Dependendo do projeto, pode ser necessário inserir sua chave da API. Você pode pular, usar um arquivo de chaves existente ou criar um novo arquivo chave
? Import Key ›
❯ Skip
Use Existing OpenAI API Key File
Create New OpenAI API Key File
A opção a seguir nos permite inserir diretamente a chave da API. Ele salvará a chave para um arquivo. Se você tiver problemas para copiar e colar a chave, insira alguns caracteres e edite o arquivo depois.
✔ Import Key · Create New OpenAI API Key File
? API Key: › sk-gKtTxOumv4orO6cfWlh0ZK
O projeto de plug -in do ChatGPT permite que você faça prototipagem rápida de um plug -in ChatGPT. Especificamente, ele permite zombar de respostas ao ChatGPT. O projeto é baseado no projeto Quickstart em: https://github.com/openai/plugins-quickstart
Seu arquivo de projeto será parecido
---
projectName : plugin-quickstart
projectVersion : ' 1.0 '
projectType : plugin
defaultConfig :
properties :
port : 5003
nameForHuman : TODO Plugin (no auth)
nameForModel : todo
descriptionForHuman : Plugin for managing a TODO list, you can add, remove and view your TODOs.
mockedRequests :
- path : " /todos/global "
method : get
mockedResponse : todos-global.json
- path : " /todos/user "
method : get
mockedResponse : todos-global.json
pluginServers :
- serverId : todo-mike
flavor : mike
# mocked requests
mockedRequests :
- path : " /todos/mike "
method : get
mockedResponse : todos.json # returns the content of this file
# Adds a different user for testing
- serverId : todo-kaleb
flavor : kaleb
mockedRequests :
- path : " /todos/kaleb "
method : get
mockedResponse : todos.json
properties :
showHttpHeaders : true # Show http headers in logsQualquer configuração no nó DefaultConfig será aplicada a cada pluginserver, a menos que esse plug -in substitua especificamente a propriedade.
Uma amostra zombada de resposta ( Todos.json ) é apresentada abaixo. Isso será devolvido em uma chamada para /Todos /Mike
{
"todos" : [
" Clean out a septic tank " ,
" Repair a broken sewer pipe " ,
" Collect roadkill for disposal " ,
" Assist in bee hive relocation " ,
" Service a grease trap at a restaurant "
]
}Para iniciar uma instância ridicularizada do servidor de plug -in
air plugin
ou para iniciar um servidor específico, adicione a opção ServerID
air plugin --serverId todo-mike
Para obter mais informações sobre como criar e usar um chatgpt-plugin
Se você optou por criar um projeto de imagem, será solicitado uma descrição. Não se preocupe, você pode alterá -lo mais tarde depois de gerar o projeto.
? Image Description: › A goldfish with big eyes
Seu arquivo de projeto será parecido
projectName : image-2
projectVersion : 2.0
apiKeyFile : api_key
blocks :
- blockId : image-block-1
pluginName : ImageGptPlugin
executions :
# First Image
- id : img-1
sizes :
- 256
- 256
- 1024
prompt : image.prompt
properties :
imageDescription : A goldfish with big eyesSeu arquivo solicitado será
Generate a picture of a ${imageDescription}
Para mais informações sobre imagens

A seguir, solicita quantas vezes executar os dados do lote. Se você escolher 5 vezes, ele executará todas as chamadas de dados em lote 5 vezes cada.
? Number of Times to Run The Block: › 5
Você verá um arquivo de projeto como o seguinte
---
projectName : mybatch
projectVersion : 1.0
apiKeyFile : api_key
blocks :
- blockId : batch-1
pluginName : BatchGptPlugin
blockRuns : 5
configuration :
requestParams :
model : gpt-3.5-turbo
temperature : 0.7
top_p : 1
max_tokens : 500
executions :
- id : batch-1
dataFile : batch-data.json
prompt : batch.promptO prompt é um prompt de hello simples do Hello
Write me a paragraph about the world I live in
World: ```${my_world}```
O arquivo em lote data.json contém os dados em lote.
{
"my_world" : [
" Hello World, I live in a magical place with magical creatures " ,
" Hello World, I live in a futuristic Utopia " ,
" Hello World, I live in a futuristic Dystopia "
]
}Modifique esses dois arquivos com seus próprios dados. Para mais informações sobre lotes
A seguir, pede quantas vezes executar a solicitação de prompt. Se você escolher 5 vezes, ele executará toda a solicitação de prompt 5 vezes.
? Number of Times to Run The Block: › 5
Em seguida, escolha o formato de saída. Você só quer uma resposta direta de texto ou deseja no formato JSON.
? Response Format ›
JSON
❯ TEXT
Se você escolher JSON, será perguntado se deseja permitir a fixação da resposta JSON. Isso tentará analisar qualquer texto estranho que o assistente de IA possa adicionar.
? Attempt to FIX JSON Responses? (y/n) › no
O arquivo do projeto será parecido
---
projectName : prompt-1
projectVersion : 1.0
apiKeyFile : api_key
blocks :
- blockId : single-1
pluginName : ExperimentGptPlugin
blockRuns : 5
configuration :
requestParams :
model : gpt-3.5-turbo
temperature : 1.2
top_p : 1
max_tokens : 500
executions :
- id : exp-1
responseFormat : json
fixJson : false
promptChain :
- prompt-json.prompt
properties :
character : Commander in Starfleet
mainCharacterName : ' '
- blockId : report-1
pluginName : ReportingGptPlugin
executions :
- id : report-1
blockIds :
- single-1O arquivo inclui alguns valores padrão para as solicitações do OpenAI. Altere -os para atender às suas necessidades. Por padrão, ele também adiciona o plug -in de relatório que gerou saída HTML da resposta do usuário/assistente.
O prompt-json.prompt se parece com o seguinte. Observe como a saída especifica para usar o JSON. Modifique o prompt e as propriedades para suas necessidades.
Write me a story about ${character}. The main character is ${mainCharacterName}.
If no main character is given, choose one. Write one sentence only.
The response should be in JSON using the following structure:
Only use these fields. {"mainCharacterName": "", "story": ""}
Para mais informações sobre prompts
Escolha o arquétipo do projeto da cadeia . Em seguida, passe pelas opções.
? Number of Times to Run The Block: › 1
? Attempt to FIX JSON Responses? (y/n) › yes
? Number of Times to Run The Prompt Chain: › 2
O arquivo Gerated Project.yaml .
---
projectName : " chain-project "
projectVersion : " 1.0 "
apiKeyFile : " api_key "
blocks :
# Block demonstrates the use of importing properties
- blockId : chain-1
pluginName : ExperimentGptPlugin
blockRuns : 1 # Number of Stories
configuration :
requestParams :
model : gpt-3.5-turbo
temperature : 1.2
top_p : 1
max_tokens : 500
executions :
- id : exp-1-import
chainRuns : 2 # Number of times to run the promptChain
promptChain :
- story.prompt
- user-action.prompt # Simulates user input
excludesMessageHistory :
- user-action.prompt
fixJson : true
responseFormat : json
# Import properties from a properties file
import :
propertiesFile : properties.json # predefined values
properties :
planet : 1 # Earth
action : 3 # Lands on the planet
- blockId : report-1
pluginName : ReportingGptPlugin
executions :
- id : report-1
blockIds :
- chain-1Os campos de propriedade no projeto acima do projeto. YAML apontam para o índice dentro do arquivo Properties.json está abaixo. Este arquivo permite alterar facilmente a entrada do teste.
{
"planet" : [
" Earth " ,
" Venus " ,
" Jupiter "
],
"action" : [
" Blows up the planet " ,
" Observes the planet From Orbit " ,
" Lands on the planet " ,
" Zips around the planet and hopes no one notices "
]
}A ferramenta substituirá o planeta "Terra" e a ação "pousa no planeta" no prompt da história abaixo. Observe que a IA gerará o nome do personagem e o primeiro parágrafo da história.
The response will be in JSON Format.
Captain ${captainsName} is near ${planet}. .
The last part of the story is: ${story}
Then the captain ${action}
Tell me a story about what happens next.
Be very descriptive. Write two sentences only.
Give me the captains name, if I haven't given it.
RESPONSE
The response must only be in JSON using the following structure.
Only use these fields. {"captainsName": "${captainsName}", "story": ""}
A ferramenta passará agora o nome do capitão retornado e a história do primeiro prompt para o usuário-ação.prompt . Retiremos de volta uma ação que o personagem toma.
Give me an action for ${captainsName} for the following story:
${story}
The response must be in JSON using the following structure.
Only use these fields. {"action": ""}
Agora vamos executar a história.Proompt novamente, mas desta vez teremos o nome do capitão e a próxima ação que ele toma.
A seguinte é a saída da amostra de uma execução real
As Captain John lands on the planet, he feels the trembling beneath his feet and sees the vibrant green flora around him.
He plants the Earth's flag to claim its new discovery and soon finds a thriving alien civilization welcoming him with open arms.
[user action "plants the flag to claim the new discovery"]
As Captain John plants the Earth's flag on the newfound planet, he is approached by the leaders of the alien civilization
who speak his language and reveal that they have known about Earth for centuries. They invite him to partake in a feast in
his honor, where he learns about their advanced technology and way of life.
Observe que a execução da corrente é a mesma que o número de parágrafos que temos na saída. Se quiséssemos outro parágrafo, definiríamos o ChainRuns para 3. Se tivéssemos colocado o BlockRuns para 5, teríamos gerado 5 histórias diferentes.
Para mais informações sobre correntes
Para gerar um relatório HTML, adicione o relatóriogpptplugin como o último bloco. Sob os BlockIDs, adicione qualquer ID de bloco anterior que você deseja adicionar ao relatório gerado.
---
projectName : experiment-reporting
projectVersion : ' 1.7 '
apiKeyFile : " ../../api_key "
blocks :
- blockId : chain-1
pluginName : ExperimentGptPlugin
blockRuns : 1
...
# Generate HTML Report
- blockId : report-1
pluginName : ReportingGptPlugin
executions :
- id : report-execution
blockIds :
- chain-1 O relatório exibirá o bate -papo inteiro para as execuções de blocos configuradas.

Para mais informações sobre relatórios
AIR -Help
A command line tool for running GPT commands
Usage: air <command> [arguments]
Global options:
-h, --help Print this usage information.
Available commands:
clean Cleans project's output directory
count Returns the number of OpenApiCalls that would be made
genp Generates a new project
plugin Runs local version of ChatGPT Plugin
run Runs a project's blocks
Run "air help <command>" for more information about a command.
Para limpar um projeto, execute o seguinte
ar limpo
Isso exclui o diretório de saída para o projeto.
Executar chamadas OpenAI com uma ferramenta pode ser caro se você a configurar mal. Para determinar quantas chamadas de abertura um projeto criarão, execute o seguinte comando
Contagem de ar
ou para a contagem de um bloco específico
contagem de ar -b myblockid
Ele será lançado
Project: product-summary-2.8
Total OpenAPI Calls would be 12
Se você quiser saber que seu projeto está fazendo antes de incorrer em custos para o OpenAI, use a bandeira DRYRUN.
Aéreo Run -Dryrun
Executing Block
Running Project: image-generation-2.3
BlockId: image-1, PluginName: ImageGptPlugin
----------
Starting Block Run: 1
Starting execution: 1 - Requires 1 calls to OpenAI
POST to https://api.openai.com/v1/images/generations
{"prompt":"Generate a picture of a Unicorn with a gold horn and wings","n":1,"size":"256x256","response_format":"url"}
Finished execution: 1
Starting execution: 2 - Requires 2 calls to OpenAI
POST to https://api.openai.com/v1/images/generations
{"prompt":"Generate a picture of a fish with giant eyes","n":1,"size":"256x256","response_format":"b64_json"}
POST to https://api.openai.com/v1/images/generations
{"prompt":"Generate a picture of a fish with giant eyes","n":1,"size":"512x512","response_format":"b64_json"}
Finished execution: 2
--------
Finished running project: 0 seconds