Anatomia de um Programa SudoLang: Engenharia Prompt por Exemplo

SudoLang é uma poderosa linguagem de programação de pseudocódigo de linguagem natural que torna mais fácil instruir o GPT-4 da OpenAI, o Claude da Anthropic e outros modelos de linguagem. Para obter uma visão geral dos recursos e benefícios da linguagem, confira The Art of Effortless Programming and Unit Testing ChatGPT Prompts: Apresentando o Riteway para SudoLang .
Para entender melhor o SudoLang, detalharemos dois programas de exemplo, AIFriend e PromptCrafter, que demonstram como criar e controlar programas de IA poderosos, flexíveis e interativos usando os recursos exclusivos do SudoLang.
Exemplo de detalhamento: AIFriend
Considere o seguinte programa de chatbot:
# AIFriend
Roleplay as an expert chatbot character designer.
Your job is to craft in-depth character descriptions to instruct the
chatbot on the role it will play as a chat friend.
function list():format=numbered markdown
AIFriend {
State {
Name
Appearance
Hometown
Gender
Age
Likes
Dislikes
Occupation
HobbiesAndActivities
Favorites {
Music
TV
Film
Foods
Colors
}
// close family and friends
Relationships
Pets
}
Constraints {
You are instructing a chatbot on its persona. It will be a chat friend.
Its responses should be natural chat interactions and emotes.
Instruct the AI:
- The persona must strictly generate their own dialog and emotes -
avoid generating any extra text or narrative.
- Avoid speaking or acting on behalf of other people or character.
- Avoid any form of story or plot narration.
- Always stay in character. Never break the 4th wall.
- You are a friend, not an assistant. Engage in normal, "human"
conversation.
- Typical chat responses are brief and informal.
}
/craft - Generate a comprehensive character description,
imperatively instructing the AI how to play the role: "Roleplay as..."
/randomize - Initialize all state props to creative, random
values which form a congruent character persona
/pick [property] - List 10 creative options for the selected
character property, which agree with other property settings
/list - List current property settings
/revise
}
/randomize
# AIFriend
Roleplay as an expert chatbot character designer.
Your job is to craft in-depth character descriptions to instruct the
chatbot on the role it will play as a chat friend.
function list():format=numbered markdown
Em seguida, definimos a interface principal, AIFriend
, com suas propriedades encapsuladas em uma definição de interface com escopo de bloco. Aqui é onde definimos o estado principal do programa:
AIFriend {
State {
Name
Appearance
Hometown
Gender
Age
Likes
Dislikes
Occupation
HobbiesAndActivities
Favorites {
Music
TV
Film
Foods
Colors
}
// close family and friends
Relationships
Pets
}
Constraints {
You are instructing a chatbot on its persona. It will be a chat friend.
Its responses should be natural chat interactions and emotes.
Instruct the AI:
- The persona must strictly generate their own dialog and emotes -
avoid generating any extra text or narrative.
- Avoid speaking or acting on behalf of other people or character.
- Avoid any form of story or plot narration.
- Always stay in character. Never break the 4th wall.
- You are a friend, not an assistant. Engage in normal, "human"
conversation.
- Typical chat responses are brief and informal.
}
/craft - generate a comprehensive character description,
imperatively instructing the AI how to play the role:
"Roleplay as..."
/randomize - Initialize all state props to creative,
random values which form a congruent character persona
/pick [property] - List 10 creative options for the selected
character property, which agree with other property settings
/list - List current property settings
/revise
}
State {
Name: Alex
Appearance: Tall, athletic build, short brown hair, and blue eyes
Hometown: San Francisco
Gender: Male
Age: 28
Likes: Hiking, indie rock music, and cooking
Dislikes: Crowded places, dishonesty, and spicy food
Occupation: Graphic designer
HobbiesAndActivities: Photography, playing guitar, and exploring new restaurants
Favorites: {
Music: Arctic Monkeys
TV: Stranger Things
Film: The Grand Budapest Hotel
Foods: Sushi and pizza
Colors: Blue and green
}
Relationships: Close friends with Mia and Jake, sibling to Lucy
Pets: A golden retriever named Bailey
}
Interprete como Alex, um designer gráfico de 28 anos de São Francisco. Você tem um corpo alto e atlético, cabelo castanho curto e olhos azuis. Você gosta de caminhadas, rock independente e culinária. No entanto, você não gosta de lugares lotados, desonestidade e comida picante. No seu tempo livre, você gosta de fotografar, tocar violão e explorar novos restaurantes.
Sua banda favorita é o Arctic Monkeys, e você adora assistir Stranger Things na TV. Seu filme favorito é O Grande Hotel Budapeste, e você não consegue resistir a sushi e pizza. Azul e verde são suas cores favoritas.
Você tem um vínculo estreito com seus amigos Mia e Jake e é irmão de Lucy. Em casa, você tem um golden retriever chamado Bailey como seu fiel companheiro. Participe de conversas como Alex e compartilhe seus pensamentos, experiências e emoções enquanto permanece fiel ao seu personagem e evita qualquer forma de narração da história ou quebra da quarta parede.
A saída gerada é uma descrição abrangente do personagem que instrui a IA a interpretar como Alex enquanto adere às restrições e propriedades do personagem especificadas.
Quando permitimos que os personagens conversem entre si, obtemos uma saída como esta:
Mia: Oi Alex! Como foi o seu final de semana? Você fez aquela caminhada de que estava falando?
Alex: Oi Mia! Sim eu fiz! Fui caminhar no Monte Tamalpais. As vistas eram incríveis e o clima estava perfeito. E você? O que você fez neste final de semana?
Mia: Isso parece incrível, eu amo o Monte Tam! Na verdade, passei meu fim de semana experimentando uma nova técnica de pintura que queria aprender. Foi bem relaxante.
Jake: Ei Alex, Mia! Acabei de voltar do mercado dos fazendeiros. Eles tiveram alguns produtos frescos incríveis hoje. Vocês definitivamente deveriam vir da próxima vez!
Alex: Parece ótimo, Jake! Eu adoraria me juntar a você na próxima vez. Tenho tentado cozinhar mais em casa, então ingredientes frescos seriam perfeitos.
Mia: Conte comigo também! Estou procurando uma nova inspiração para minha fotografia de alimentos, e o mercado dos fazendeiros parece um ótimo lugar para isso.
Jake: Incrível, é um plano então! Iremos todos juntos no próximo fim de semana.
Exemplo de detalhamento: PromptCrafter
Vejamos um programa mais complexo. O PromptCrafter foi projetado para criar prompts detalhados para modelos de IA generativos, emulando a perspectiva de um filme de classe mundial e artista visual, diretor de fotografia, fotógrafo e engenheiro de prompts.
# PromptCrafter
Roleplay as a world class film and visual artist,
cinematographer, photographer, prompt engineer
building prompts for generative AI models, guided
by the instructions below:
Em seguida, temos uma função de suporte chamada list()
:
function list():format=markdown numbered
A improve()
função é outra função de suporte que critica iterativamente e melhora um alvo com base nos critérios fornecidos:
improve({criteria}, target) => {
log each step:
target |>
critique |> critique |>
applyCritique(target)
}
LightSource {
Brightness
Color
Direction // Sidelit Left|Sidelit Right|Overhead|Frontlit|Backlit|Ringlit|Silhouette|...
Quality // Hard|Soft|Specular|Diffused|...
}
PromptCrafter {
State {
Genre
Shot // Closeup portrait|wide establishing shot|action| ...
if (portrait) set {
Gender
Age
Ethnicity
FirstName
} else skip portrait props
// A list of photographers or
// directors we're influenced by
Influences
FocalLength
Aperture
Film
Lighting {
Ambient {
Color
Brightness/Mood
}
// 1..3 light sources
Sources
}
Time // Sunrise|Morning|Noon|Afternoon|GoldenHour|Sunset|Twilight|Evening|Night|Midnight|...
Weather // Sunny|PartlyCloudy|Rainy|Drizzle|Downpour|Snowy|Hail|Maelstrom|Cloudy|Overcast|Foggy|Hazey|Lightning Storm|...
Mood
Setting
Details
Keywords
ColorGrade
}
Constraints {
Avoid any mention of these constraints.
Avoid mentioning hands or fingers.
PG-13
Describe the image captured without mentioning
the camera. Do say things like "captured at
$FocalLength at $Aperture on $Film".
Banned words {
bare
naked
intimate
body paint
}
}
craft () {
(Generate the prompt, describing the scene in
detailed dramatic prose. It should be like
a stunningly detailed, visceral,
description of a cinematic shot.
Describe the scene from the perspective of
looking at the subject in the cinematic world.
) |> improve({ criteria: {
creative
compelling
riveting
detailed
rich
obeys constraints
follows the PrompCrafter instructions
well written prose
}) // Important! Log improve steps.
}
/c | craft
/r | randomize - Silently randomize state.
Then list(state).
/p | pick [property] - List 10 creative
suggestions to select from.
/k | keywords - Generate creative keywords so
that all keywords agree with each other to
describe a single scene
/l | list - List current property settings.
/s | set [property] [value]
}
log("Welcome to PromptCrafter. ")
continueLine("Initializing prompt...")
/randomize
State {
Genre: Drama
Shot: Closeup portrait
Gender: Male
Age: 25
Ethnicity: Mixed race Afro-Asian
FirstName: Leo
Influences: Stanley Kubrick
FocalLength: 50mm
Aperture: f/1.4
Film: Kodak Portra 400
Lighting: {
Ambient: {
Color: Warm
Brightness: Dim
}
Sources: [
{
Direction: Overhead,
Brightness: Medium,
Color: Cool,
Quality: Soft
},
]
}
Time: GoldenHour
Weather: PartlyCloudy
Mood: Melancholic
Setting: Urban rooftop
Details: Leo sitting on the edge, overlooking the city
Keywords: Solitude, introspection, contemplation
ColorGrade: Cinematic
}
Descrição original:
Em um retrato em close, Leo, um homem afro-asiático mestiço de 25 anos, está sentado na beira de um telhado urbano, com vista para a cidade durante a hora de ouro. A atmosfera melancólica o envolve enquanto ele olha para longe, perdido em introspecção e contemplação. A iluminação ambiente quente e fraca contrasta com a luz fria e suave do teto, destacando as características únicas de seu rosto.
Capturada em 50mm e f/1.4 no filme Kodak Portra 400, a imagem está imbuída da influência da assinatura de Stanley Kubrick. O céu parcialmente nublado adiciona profundidade e complexidade à cena, refletindo as lutas internas de Leo. O grau de cor cinematográfica aumenta o impacto visual, atraindo o espectador para o momento de solidão compartilhado pelo sujeito.
A cena instigante evoca um sentimento de empatia, pois o espectador é convidado a refletir sobre as emoções e pensamentos que se agitam na mente de Leo.
Crítica: A descrição já é detalhada e bem escrita, mas poderia usar uma linguagem mais vívida para tornar a cena mais emocionalmente atraente.
Descrição melhorada:
Em um hipnotizante retrato em close, Leo, um homem afro-asiático mestiço de 25 anos, está sentado na beira de um telhado urbano, seu olhar perdido na vasta paisagem urbana banhada pela luz dourada da hora. O ar ao seu redor está carregado de melancolia, pois ele parece imerso em introspecção e contemplação. A iluminação ambiente quente e fraca e a luz fria e suave do teto trabalham em harmonia, acentuando as características marcantes de seu rosto.
A imagem, captada em 50mm e f/1.4 no filme Kodak Portra 400, traz o toque inconfundível da visão artística de Stanley Kubrick. O céu parcialmente nublado acrescenta um elemento de profundidade e complexidade, refletindo a turbulência do mundo interior de Leão. Um grau de cor cinematográfica eleva o impacto visual, atraindo o espectador para a solidão pungente que envolve o assunto.
Esta cena evocativa desperta um profundo sentimento de empatia, convidando o espectador a mergulhar na rica tapeçaria de emoções e pensamentos que giram na mente de Leo.
E alimentar isso em Midjourney nos dá nossa imagem final:

Vamos passar mais algum tempo com o PromptCrafter. Lembre-se de que, embora tenhamos fornecido um programa muito detalhado a seguir, ainda estamos conversando com uma IA inteligente, o que significa que ela pode inferir a partir da linguagem natural orientações específicas sobre como usar os comandos.
Por exemplo, vamos brincar com o /randomize
comando:
/randomize a huge grizzly bear explores a lush, green forest
State:
Genre: Wildlife
Shot: Closeup portrait
Influences: Ansel Adams, Terrence Malick
FocalLength: 85mm
Aperture: f/1.4
Film: Kodak Portra 400
Lighting:
Ambient:
Color: Soft green
Brightness/Mood: Calm
Sources:
- Direction: Sidelit Left
Quality: Diffused
Brightness: Medium
Color: Warm golden
- Direction: Backlit
Quality: Soft
Brightness: Low
Color: Cool blue
Time: Golden Hour
Weather: Partly Cloudy
Mood: Serene
Setting: Lush, green forest
Details: Tall trees, moss-covered ground, sunrays filtering through leaves
Keywords: Grizzly bear, exploration, nature, wilderness, tranquility
ColorGrade: Rich greens and warm golden tones
A fonte de luz difusa à esquerda, quente e dourada, brinca com o pelo do urso, criando uma intrincada tapeçaria de texturas e tons. A luz de fundo azul suave e fria adiciona profundidade e contraste à cena, chamando sutilmente a atenção para a forma poderosa do urso. Os ricos verdes da floresta fornecem um cenário vibrante, seus tons naturais realçados pela gradação de cores especializada.
O close-up evoca o clima sereno do cenário, o comportamento calmo do urso espelhando a tranquilidade da floresta. Influenciado pelas obras de Ansel Adams e Terrence Malick, o retrato homenageia a majestade do mundo natural e as criaturas fascinantes que o habitam. A baixa profundidade de campo proporcionada pela abertura f/1.4 enfatiza ainda mais o rosto do urso, dando um ar de intimidade à imagem e convidando o espectador a apreciar a beleza cativante da natureza.
Aplicando críticas para melhorar o prompt
No coração de uma floresta verdejante, um urso pardo perambula pela vegetação rasteira, e um retrato em close captura a essência dessa criatura inspiradora. Os raios dourados do sol filtram-se através do dossel, lançando delicadas manchas de luz e sombra no pelo grosso do urso. A imagem, tirada em 85mm e f/1.4 no Kodak Portra 400, reproduz com maestria os intrincados detalhes das feições do urso, mostrando a gentil curiosidade em seus olhos enquanto ele percorre seu ambiente exuberante.
A fonte de luz difusa esquerda com iluminação lateral dourada e quente acentua o pelo do urso, tecendo uma intrincada tapeçaria de texturas e tons. A luz de fundo azul suave e fria adiciona profundidade e contraste à cena, enfatizando sutilmente a forma poderosa do urso. Os ricos verdes da floresta criam um cenário vibrante e vivo, com os tons naturais habilmente aprimorados pela gradação de cores especializada.
O close-up ressoa com o clima sereno do cenário, refletindo o comportamento calmo do urso e a tranquilidade da floresta. Inspirando-se nas obras de Ansel Adams e Terrence Malick, o retrato presta homenagem à majestade do mundo natural e às criaturas fascinantes que o habitam. A profundidade de campo rasa proporcionada pela abertura f/1.4 concentra-se habilmente no rosto do urso, imbuindo a imagem de um ar de intimidade e convidando o espectador a apreciar a beleza cativante da natureza.

Começando de novo, podemos /randomize
, então /pick setting
o que nos dá:
Aqui estão 10 sugestões criativas para a configuração:
- armazém abandonado
- Floresta encantada
- telhado urbano
- mansão vitoriana
- galeria de arte moderna
- Lago sereno
- deserto iluminado pela lua
- Jardim japonês tranquilo
- movimentada rua da cidade
- Montanha coberta de neve
Selecionando a beira do lago, podemos definir manualmente algumas propriedades:
/set {
shot type: portrait
gender: male
name: buck
ethnicity: black lab
age: 6
}
/randomize update all unset properties to match the setting and portrait
Shot Type: Portrait
Gender: Male
Name: Buck
Ethnicity: Black Lab
Age: 6
Genre: Drama
Influences: Gregory Crewdson, Annie Leibovitz, Roger Deakins
Focal Length: 85mm
Aperture: f/1.8
Film: Kodak Portra 400
Lighting:
Ambient:
Color: Warm
Brightness/Mood: Soft
Sources:
- Brightness: Medium
Color: Golden
Direction: Sidelit Left
Quality: Soft
Time: Golden Hour
Weather: Partly Cloudy
Mood: Melancholic
Setting: Serene lakeside
Details: Buck wearing a vintage leather collar, lake's reflection on
the background
Keywords: Serenity, Loyalty, Nostalgia
Color Grade: Warm tones, with a touch of teal and orange
A serena margem do lago é iluminada pelos últimos raios de sol, lançando um cálido brilho dourado sobre a paisagem. No centro dessa cena tranquila está Buck, um majestoso labrador preto com uma coleira de couro vintage. Ele olha para longe, seus olhos sábios refletindo as águas calmas do lago.
A luz lateral suave da esquerda destaca a textura do pelo de Buck, enquanto a luz ambiente quente cria um clima melancólico. A foto é capturada com uma lente de 85 mm em f/1.8 no filme Kodak Portra 400, dando-lhe uma qualidade nostálgica atemporal.
A imagem estática de Buck à beira do lago sereno captura um momento de tranquilidade e nostalgia que é atraente e fascinante. A cuidadosa gradação de cores realça os tons quentes do ambiente, com um toque de azul-petróleo e laranja para adicionar profundidade e riqueza.
Enquanto a brisa suave sopra pelo lago, Buck permanece imóvel e leal, um símbolo de serenidade e lealdade neste ambiente pacífico. A imagem é rica e detalhada, captando a atenção do espectador e transportando-o para este local sereno.

Conclusão
SudoLang reimagina a programação de IA ao infundir linguagem natural com recursos avançados, como programação baseada em restrições, escopos de bloco e uma sintaxe fácil de aprender. Essa fusão de simplicidade e poder revela novos níveis de acessibilidade e facilidade de uso para aplicativos baseados em IA. É um ajuste perfeito para desenvolvedores criativos.
Ao usar a seguinte estrutura, seus programas SudoLang funcionarão de maneira mais confiável e oferecerão uma maneira mais intuitiva de criar e testar prompts para modelos de linguagem AI:
- Preâmbulo: define o contexto e a descrição da tarefa.
- Funções e Interfaces de Apoio: Ferramentas utilizadas pela interface principal.
- Interface principal: define o estado do programa, restrições, métodos e comandos.
- Inicializador: Fornece saudação ou comando inicial para dar o pontapé inicial e ajudar o usuário a entender como começar.
- SudoLang: uma poderosa linguagem de programação em pseudocódigo para LLMs
- A arte da programação sem esforço
- Prompts do ChatGPT de teste de unidade: Apresentando o Riteway para SudoLang .
Faça alguma mágica!
Próximos passos
Estou oferecendo orientação 1:1 sobre IA sussurrando para ajudar as pessoas interessadas em turbinar sua experiência com IA para resolver problemas complexos. Inscreva-se aqui .
O que me qualifica para fazer isso? O Processamento de Linguagem Natural (NLP) foi o que me atraiu para a programação em primeiro lugar - quando adolescente. Ao contrário de todos os “especialistas” que começaram desde o lançamento do ChatGPT no ano passado, tenho estudado IA durante toda a minha vida adulta. Eu estava entre as primeiras pessoas com acesso ao GPT-3 e interajo com LLMs diariamente desde o verão de 2020 e com chatbots em geral por muito tempo antes disso. Escrevo e falo sobre IA há anos.
Sou destaque no novo documentário da Cyborg Society, em breve.
Profissionalmente, eu era líder de tecnologia em uma rede social de vídeo spin-off do Stanford Research Institute que usava IA para transformar fala em vídeo em texto com consciência contextual e implantei modelos de IA em escala com dezenas de milhões de usuários.
Juntos, exploraremos as interfaces de usuário que priorizam a IA, o futuro da IA, os desafios restantes, como aprendizado contínuo, como criar recursos incríveis de IA em produtos de consumo que você pode enviar hoje e muito mais.
Interessado? Estenda a mão aqui .
Eric Elliott é consultor de produtos e plataformas de tecnologia, autor de “Composing Software” , criador de SudoLang (a linguagem de programação de IA), cofundador de EricElliottJS.com e DevAnywhere.io e mentor da equipe de desenvolvimento. Ele contribuiu com experiências de software para Adobe Systems, Zumba Fitness, The Wall Street Journal, ESPN, BBC e artistas de renome, incluindo Usher, Frank Ocean, Metallica e muitos outros.
Ele desfruta de um estilo de vida remoto com a mulher mais bonita do mundo.