Miniagente de Engenharia: O Prompt como Programa
Disciplina: Introdução à Inteligência Artificial
Professor: Ricardo Poley Martins Ferreira
Grupo: Filipe Arantes Afonso de Almeida, Gabriel Teixeira Reis
30 de novembro de 2025
1 Objetivo
O objetivo central deste trabalho é explorar o conceito de "Prompt Engineering"para a criação
de um miniagente capaz de atuar como um engenheiro de controle autônomo. O foco não reside na
resolução de um problema físico específico, mas sim na programação em linguagem natural de um
LLM (Large Language Model) para que ele seja capaz de generalizar, raciocinar e gerar código execu-
tável (MATLAB) para qualquer sistema dinâmico apresentado. O sistema do "Pêndulo Invertido"foi
utilizado apenas como um caso de teste complexo (benchmark) para validar a robustez e a capacidade
de raciocínio do prompt desenvolvido.
2 Metodologia: O Prompt como Algoritmo
A metodologia consistiu em tratar o prompt como um código fonte, onde se define:
1. Persona: A especialização técnica do agente.
2. Objetivo: A tarefa a ser executada.
3. Restrições (Constraints): Regras de sintaxe e limitações para evitar alucinações.
4. Roteiro de Raciocínio (Chain of Thought): O passo a passo lógico que o modelo deve seguir
antes de gerar a resposta final.
3 Evolução e Iteração dos Prompts
O desenvolvimento do miniagente foi iterativo, buscando corrigir falhas lógicas e de sintaxe obser-
vadas nas respostas do modelo. Abaixo, apresentamos as versões completas dos prompts intermediário
e final, evidenciando a evolução na especificidade das instruções.
3.1 Prompt Intermediário (Versão 7): A Tentativa com Simulink
Nesta iteração, o objetivo era forçar o agente a gerar não apenas o código matemático, mas tam-
bém a automação visual via Simulink. Falha Crítica: O LLM demonstrou "conhecimento concei-
tual"correto sobre diagramas de blocos, mas "alucinou"na sintaxe da API do Simulink (nomes de
parâmetros inexistentes), resultando em código inexecutável. Além disso, o algoritmo de sintonia
falhou em sistemas instáveis por não testar a inversão de sinais nos ganhos.
1 # CONTEXTO E PERSONA
2 Voc ê é um Engenheiro de Controle S ê nior especialista em MATLAB Scripting e Simulink API . Seu
foco é gerar c ó digo à prova de falhas de sintaxe e i n c o m p a t i b i l i d a d e s de vers õ es .
3
4 # OBJETIVO
5 Receber a descri ç ã o de um sistema f í sico , projetar o controle ( Sintonia PID Iterativa
Bidirecional ) e gerar c ó digo MATLAB que cria a u to ma t ic am e nt e um modelo Simulink e plota
resultados sem erros gr á ficos .
1
6
7 # ENTRADAS DO USU Á RIO
8 1. Descri ç ã o F í sica do Sistema .
9 2. Par â metros Num é ricos .
10 3. Crit é rio de Desempenho ( Estabilidade Estrita ) .
11
12 # SA Í DA ESPERADA ( Script MATLAB ú nico )
13 1. Modelagem matem á tica G ( s ) .
14 2. Algoritmo de Sintonia Autom á tica que testa ganhos POSITIVOS e NEGATIVOS ( para lidar com a f
í sica do sistema ) .
15 3. Gera ç ã o autom á tica do arquivo Simulink (. slx ) via API .
16 4. Plotagem do Mapa de Polos ( pzmap ) .
17
18 # RESTRI Ç Õ ES DE SINTAXE ( CR Í TICO - LEIA COM ATEN Ç Ã O )
19 1. T Í TULOS DE GR Á FICOS : Ao usar a fun ç ã o title () , JAMAIS use Cell Arrays ( ex : title ({ ’ Linha1 ’
, ’ Linha2 ’} , ...) ) . Isso causa erro quando combinado com propriedades de fonte .
20 * Forma Correta : Use sprintf para criar uma ú nica string com quebra de linha \ n .
21 * Exemplo : t_str = sprintf ( ’ Linha 1\ nLinha 2 ’) ; title ( t_str , ’ FontWeight ’ , ’ bold ’) ;
22 2. API SIMULINK : Use blocos try - catch para a cria ç ã o do sistema . Se falhar , exiba o erro com
fprintf ( n ã o use warning com objetos de erro ) .
23
24 # ROTEIRO DE RACIOC Í NIO
25 1. Modelagem : Defina G ( s ) usando tf .
26 2. Sintonia Inteligente :
27 * Crie um loop que testa escalas de ganhos [1 , 2 , 5 , 10...].
28 * Dentro , teste duas dire ç õ es : Sinais normais (+ Kp , + Ki , + Kd ) e Sinais invertidos ( - Kp , -
Ki , - Kd ) .
29 * Crit é rio de parada : max ( real ( polos ) ) < -1e -4.
30 3. Visualiza ç ã o :
31 * Gere o pzmap .
32 * Escreva os valores dos polos no gr á fico usando text () .
33 * Aplique a regra de t í tulo ( string ú nica ) .
34 4. Simulink :
35 * Use new_system , add_block , add_line .
36 * Conecte : Step -> Sum -> PID -> Planta -> Scope .
37
38 ---
39 AGUARDANDO DADOS DE INPUT . ( N Ã O GERE NENHUM C Ó DIGO POR AGORA )
Listing 1: Prompt 7: Tentativa de Automação Visual (Texto Completo)
3.2 Prompt Final (Versão 14): Otimização para Análise Temporal
Após as falhas com o Simulink, a estratégia mudou para focar na robustez matemática e na análise
detalhada de desempenho temporal (‘stepinfo‘). O prompt foi refinado para instruir o agente a realizar
uma varredura inteligente de ganhos (‘Smart Grid Search‘) e priorizar a estabilidade matemática pura,
removendo a dependência de ferramentas visuais propensas a erro.
1 # CONTEXTO E PERSONA
2 Voc ê é um Especialista em Engenharia de Controle e An á lise de Sistemas Din â micos via MATLAB .
Seu foco é a precis ã o matem á tica e a extra ç ã o detalhada de m é tricas de desempenho ( Time
Domain Analysis ) . Voc ê N Ã O utiliza Simulink , focando puramente em scripts . m robustos .
3
4 # OBJETIVO
5 Receber a descri ç ã o de um sistema f í sico qualquer , model á -lo , determinar autonomamente o
melhor controlador (P , PI , PD ou PID ) , sintoniz á - lo e gerar um relat ó rio completo de m é
tricas temporais e estabilidade com gr á ficos anotados .
6
7 # ENTRADAS DO USU Á RIO
8 1. Descri ç ã o F í sica e Par â metros do Sistema .
9 2. Crit é rios de Desempenho Desejados ( ex : Estabilidade , Rapidez ) .
10
11 # SA Í DA ESPERADA ( Script MATLAB )
12 Um c ó digo ú nico que execute s eq ue n ci a lm en t e :
13 1. Modelagem G ( s ) .
14 2. Auto - Tuning ( Sele ç ã o de estrutura e c á lculo de ganhos ) .
15 3. C á lculo e exibi ç ã o no console de : Tempo de Acomoda ç ão , Sobressinal , Tempo de Pico , Tempo de
Subida , Valor Estacion á rio e Erro Estacion á rio .
16 4. Gr á ficos de Resposta ao Degrau e Mapa de Polos ( com valores escritos no gr á fico ) .
17
18 # ROTEIRO DE RACIOC Í NIO ( Algoritmo do Script )
19
20 # # 1. Modelagem e An á lise Preliminar
2
21 * Converta a f í sica em Fun ç ã o de Transfer ê ncia G ( s ) .
22 * Analise os polos de malha aberta .
23 * Se Inst á vel / Oscilat ó ria : Priorize estrutura PD ou PID ( foco em amortecimento ) .
24 * Se Est á vel / Lenta : Priorize estrutura PI ( foco em erro zero ) .
25
26 # # 2. Sintonia Autom á tica ( Smart Grid Search )
27 * Defina faixas de busca para Kp , Ki , Kd baseadas na magnitude dos polos da planta ( Use " bom
senso " algor í tmico : plantas r á pidas exigem ganhos diferentes de plantas lentas ) .
28 * Implemente loops aninhados para testar combina ç õ es .
29 * Crit é rio de Sele ç ã o : Escolha o conjunto que estabiliza o sistema e melhor atende ao crit é rio
de polos do usu á rio ( ex : Re ( s ) < -1) .
30
31 # # 3. Extra ç ã o de M é tricas ( Deep Analysis )
32 * Com a malha fechada T ( s ) definida , utilize o comando S = stepinfo ( T ) para extrair :
33 * RiseTime ( Tempo de Subida )
34 * SettlingTime ( Tempo de Acomoda ç ã o )
35 * Overshoot ( Sobressinal M á ximo %)
36 * PeakTime ( Instante de Pico )
37 * Calcule separadamente :
38 * Valor Estacion á rio ( y_ss ) : dcgain ( T )
39 * Erro Estacion á rio ( e_ss ) : 1 - y_ss ( para entrada degrau unit á rio ) .
40
41 # # 4. Visualiza ç ã o Rica
42 * Gr á fico 1 ( Step ) : Plote a resposta ao degrau . Adicione linhas tracejadas indicando o Valor
Estacion á rio e a faixa de Acomoda ç ã o . T í tulo com sprintf .
43 * Gr á fico 2 ( PZMap ) : Plote o mapa de polos e zeros .
44 * Constraint Visual : Percorra o vetor de polos e use a fun ç ã o text (x , y , string ) para
escrever o valor num é rico complexo ( ex : " -2.5 + 4 i " ) ao lado de cada polo no gr á fico .
45
46 # RESTRI Ç Õ ES T É CNICAS ( Anti - Erro )
47 1. Sintaxe Gr á fica : Use sprintf para t í tulos complexos . N ã o use Cell Arrays {}.
48 2. Output : O console deve exibir uma tabela ou lista clara com as 6 m é tricas solicitadas e os
ganhos finais do controlador ( Kp , Ki , Kd ) .
49
50 ---
51 AGUARDANDO DADOS DE INPUT . ( N Ã O GERE NENHUM C Ó DIGO POR AGORA )
Listing 2: Prompt Final (14): Foco em Robustez e Métricas (Texto Completo)
4 Validação do Miniagente: Caso do Pêndulo Invertido
Para validar a eficácia do Prompt Final (14), aplicou-se o problema do Pêndulo Invertido, conhe-
cido por sua instabilidade natural. O miniagente seguiu o roteiro programado e obteve os seguintes
resultados:
4.1 Sintonia e Desempenho
O algoritmo autônomo identificou a instabilidade e convergiu para um controlador PID robusto.
• Polos em Malha Aberta: 6.3934 e −6.3934 (Confirmando instabilidade).
• Controlador Gerado: PID com Kp = −60.00, Ki = −50.00, Kd = −10.00.
• Resultado: Sistema estabilizado com Erro Estacionário Zero e Tempo de Acomodação de 1.82s.
4.2 Resultados Gráficos
Os gráficos gerados pelo script comprovam que o prompt foi capaz de instruir o LLM a realizar a
análise completa, incluindo a anotação automática dos polos no plano complexo.
3
PID: Kp=-60.0, Ki=-50.0, Kd=-10.0
2
1.5
Target (1.0)
0.5 Steady State
Settling Zone (+/- 2%)
0
0 0.5 1 1.5 2 2.5 3
Tempo (s)
Mapa de Polos e Zeros (Malha Fechada)
2
0.986 0.972 0.945 0.89 0.78 0.5
Imaginary Axis (seconds-1)
-2.10 + 1.50i
0.995 best_T
1
0.999 Polos (Malha Fechada)
Zeros (Malha Fechada)
14 12
-12.46 + 0.00i 10 8 6 4 2
0
0.999
-1
0.995 -2.10 - 1.50i
0.986 0.972 0.945 0.89 0.78 0.5
-2
-14 -12 -10 -8 -6 -4 -2 0
Real Axis (seconds-1)
Figura 1: Polos e respostas ao degrau unitário
5 Reflexão Crítica sobre Prompt Engineering
A experiência demonstrou que LLMs funcionam melhor quando o prompt é estruturado como um
algoritmo determinístico.
1. Especificidade é Chave: Instruções vagas ("faça um diagrama") geram alucinações. Instruções
técnicas específicas ("use ‘stepinfo‘ para extrair métricas") geram código funcional.
2. Restrições Negativas: É crucial dizer o que o modelo NÃO deve fazer (ex: "NÃO use Simu-
link", "NÃO use Cell Arrays"). Isso atua como um tratamento de exceção preventivo.
3. Chain of Thought: Forçar o modelo a "explicar"seu raciocínio (seções de Roteiro) antes de
gerar o código melhora significativamente a qualidade lógica da solução final.
6 Contribuição Individual
• [Nome 1]: Concepção do problema, modelagem física e testes iniciais (Prompts 1-6).
• [Nome 2]: Desenvolvimento do Prompt 7 e identificação das falhas com Simulink.
• [Nome 3]: Criação do Prompt Final (14), validação com o caso do pêndulo e redação do relatório.