Relatescript é uma meta-linguagem declarativa projetada para otimizar a criação de instruções estruturadas e consistentes para modelos de idiomas grandes (LLMS). Este artigo apresenta a sintaxe do Relatescript, destacando sua base na lógica relacional e predicada. Ao focar nos relacionamentos, condições e contexto, relaciona a lacuna entre a expressividade da linguagem natural e a precisão necessária para a interação eficaz LLM. Ele facilita uma nova abordagem para provar a engenharia, onde os humanos e o LLMS desenvolvem colaborativamente instruções estruturadas que podem ser facilmente modificadas e reutilizadas para diversas tarefas, aprimorando os recursos de confiabilidade e automação dos fluxos de trabalho orientados a LLM.
No campo em rápida evolução de grandes modelos de linguagem (LLMs), a eficácia das interações depende muito da qualidade dos avisos. As linguagens de programação imperativa tradicionais geralmente impõem estruturas rígidas que contrastam com a natureza diferenciada e sensível ao contexto do raciocínio humano. Embora a linguagem natural ofereça flexibilidade incomparável para interagir com os LLMs, ela pode levar à ambiguidade e inconsistência em saídas rápidas. Para enfrentar esses desafios, introduzimos o Relatescript, uma meta-linguagem declarativa projetada especificamente para a criação de instruções estruturadas. O Relatescript permite que os usuários definam entidades, relacionamentos e condições em um formato que seja legível e logicamente preciso. O Relatescript não se destina a uma linguagem de programação tradicional com um analisador separado, mas como um formato de entrada estruturado que aproveita as capacidades de entendimento inerente do LLMS.
O Relatescript atende à crescente necessidade de uma abordagem mais sistemática e confiável para provar a engenharia. À medida que os LLMs se tornam cada vez mais sofisticados, a capacidade de articular instruções complexas e definir condições precisas se torna crucial para aproveitar todo o seu potencial. O Relatescript fornece uma maneira acessível e intuitiva de descrever relacionamentos e dependências entre as entidades, permitindo que os usuários expressem intrincados lógica de uma maneira que se alinhe de perto com o raciocínio humano. Com uma sintaxe projetada para a legibilidade, o Relatescript autoriza os usuários a gerar instruções consistentes, tornando -a particularmente adequada para criar modelos de prompt reutilizáveis que podem ser adaptados para diferentes cenários, aumentando assim a eficiência e a confiabilidade das interações LLM. Também permite a combinação dos pontos fortes do conhecimento do domínio humano com a estrutura de uma forma lógica.
A sintaxe do Relatescript enfatiza a estrutura da linguagem natural, permitindo declarações legíveis de entidades, relacionamentos e condições. Seus principais construções incluem:
define <Entity> as <Description>.
<Entity> is <Predicate>.
<Entity> has <Attribute> of <Value>.
relate <Entity1> and <Entity2> as <RelationType> [ if <Condition> ].
if <Condition>, then <Action>.
ensure <Goal>.
Um prompt com instruções compostas e lógica de vários níveis.
define City as "A collection of buildings and people".
Berlin is a City.
Berlin has Population of 3_500_000.
define Metropolis as "A city with more than 1_000_000 inhabitants".
if City has Population > 1_000_000,
then ensure City is a Metropolis.
Comportamento esperado: o LLM deve reconhecer que Berlim é uma "metrópole" porque sua população é maior que 1.000.000.
Mais amostras
O seguinte formulário estendido backus-naur (eBNF) define a sintaxe do Relatescript:
program ::= { statement } ;
statement ::= definition | predicate | attribute | relation | condition | goal ;
definition ::= " define " entity " as " string " . " ;
predicate ::= entity " is " predicate_value " . " ;
attribute ::= entity " has " attribute_name " of " attribute_value " . " ;
relation ::= " relate " entity " and " entity " as " relation_type [ " if " condition ] " . " ;
condition ::= " if " condition_expr " , then " action " . " ;
goal ::= " ensure " goal_expr " . " ;
condition_expr ::= entity predicate_operator predicate_value
| entity attribute_operator attribute_value
| entity relation_operator entity ;
goal_expr ::= entity relation_type entity ;
action ::= " ensure " goal_expr ;
entity ::= identifier ;
predicate_value ::= identifier ;
attribute_name ::= identifier ;
attribute_value ::= identifier | number ;
relation_type ::= string ;
predicate_operator ::= " is " | " is not " ;
attribute_operator ::= " has " | " does not have " ;
relation_operator ::= " relates to " | " does not relate to " ;
identifier ::= letter { letter | digit | " _ " } ;
letter ::= " a " | " b " | " ... " | " z " ;
string ::= ' " ' { character } ' " ' ;
number ::= digit { digit } ;
character ::= lowercase-char | uppercase-char | digit | special-char ;
lowercase-char ::= " a " | " b " | " ... " | " z " ;
uppercase-char ::= " A " | " B " | " ... " | " Z " ;
special-char ::= " - " | " _ " ;
digit ::= " 0 " | " 1 " | " ... " | " 9 " ;
Estrutura principal ( program
) : Um programa (prompt) consiste em uma sequência de statements
, cada uma das quais define uma informação, relacionamento ou declaração específico.
Declarações :
definition
): define uma entidade com um nome e uma descrição.predicate
): atribui uma propriedade ou estado a uma entidade.attribute
): associa uma entidade a um atributo e um valor.relation
): define uma relação entre duas entidades, opcionalmente com uma condição.condition
): define uma condição e uma ação resultante.goal
): descreve uma meta que deve ser alcançada.condition_expr
): verifique os relacionamentos ou propriedades entre as entidades.goal_expr
): Descreva o que deve ser alcançado.action
): Relacione -se com o objetivo que deve ser cumprido.entity
, predicate_value
, attribute_name
, attribute_value
e relation_type
são componentes básicos representados por identificadores (por exemplo, nomes) ou valores (como números).predicate_operator
, attribute_operator
e relation_operator
definem o tipo de relacionamento ou condições, por exemplo, "é", "tem", "se relaciona com".identifier
representa nomes e deve começar com uma carta.string
significa texto e está entre aspas. O Relatescript oferece uma estrutura estruturada e orientada por lógica que complementa perfeitamente as abordagens naturais baseadas em linguagem. Enquanto a linguagem natural se destaca em transmitir nuances e ambiguidade, particularmente para tarefas criativas, o Relatescript fornece clareza, precisão e consistência lógica-qualidades essenciais para interações complexas e multi-etapas com os LLMs.
O Relatescript pode ser efetivamente emparelhado com insumos de linguagem natural para combinar os pontos fortes dos dois métodos:
Por exemplo, um usuário pode começar com um prompt de linguagem natural, como:
"Ajude -me a construir um modelo de vendas. Comece fazendo suposições básicas sobre clientes e produtos".
Este contexto pode então ser suportado por um bloco Relatescript:
define Product as "A product for sale".
Product is available.
Product has price of 100.
Product has category of "Electronics".
define Customer as "A person who wants to buy a product".
Customer has budget of 150.
relate Customer and Product as "buys" if Product is available and Customer has budget of 150.
ensure Customer buys Product.
Essa combinação permite que os LLMs aproveitem a configuração intuitiva e rica em contexto da linguagem natural enquanto aderem à estrutura lógica e precisão do Relatescript.
Relatescript alinha -se com técnicas avançadas de solicitação para LLMs, como:
Relatescript é ideal para tarefas que exigem:
No entanto, a linguagem natural permanece superior para:
O uso mais eficaz do Relatescript reside em sua aplicação híbrida, onde atua como um suplemento aos insumos de linguagem natural. Essa abordagem permite que os usuários equilibrem a criatividade e a consistência lógica, permitindo que os LLMs lidem com uma gama mais ampla de tarefas com precisão e adaptabilidade. Advogamos um fluxo de trabalho iterativo, onde os avisos do Relatescript são refinados continuamente com base no feedback do LLM, levando a interações cada vez mais eficazes e confiáveis.
Vários idiomas e estruturas oferecem recursos relacionais, declarativos ou sensíveis ao contexto. Aqui, comparamos o Relatescript com sistemas semelhantes.
O Prolog é uma linguagem de programação lógica comumente usada na IA. Ele usa fatos e regras para derivar novas informações.
O Datalog é uma versão simplificada do Prolog, usada para consultas de banco de dados e raciocínio lógico.
Os dados do modelo SPARQL e RDF como um gráfico de relacionamentos de objeto de sujeito-predicato, geralmente para a Web semântica.
Descrição A lógica é uma linguagem formal para a representação do conhecimento em ontologias.
Os motores de regras usam regras declarativas para a tomada de decisão automatizada em aplicativos de negócios.
if-then
, como as condições e objetivos do Relatescript.A estrutura do Relatescript é ideal para:
Pesquisa científica :
Sistemas de IA :
Representação do conhecimento : Modelando entidades, atributos e relacionamentos dentro de um domínio específico.
Sistemas de tomada de decisão : usando metas e condições para ajustar dinamicamente o comportamento do programa.
Clareza e precisão : Relatescript está claramente estruturado, com regras e termos definidos. Isso reduz a ambiguidade frequentemente encontrada na linguagem natural e garante que o LLM interprete corretamente o significado pretendido.
Relações e condições claras : a estrutura declarativa do Relatescript é particularmente adequada para formular explicitamente conexões e condições. Isso pode ajudar um LLM a tirar conclusões ou coordenar etapas seqüenciais.
Interpretação reduzida : Como o Relatescript é baseado em uma gramática lógica, o "trabalho de interpretação" para um LLM geralmente é mais fácil. Requer uma compreensão menos contextual da própria linguagem e pode se concentrar nas instruções.
Compreensibilidade e acessibilidade : Para muitos usuários, a linguagem natural é mais intuitiva e mais fácil de usar, pois não requer estrutura específica ou sintaxe definida. Essa é uma vantagem quando as instruções para o LLM são criadas por não programadores.
Flexibilidade e expressividade : a linguagem natural é muito mais flexível e pode transmitir instruções complexas e diferenciadas que são mais difíceis de expressar em um sistema altamente estruturado como o Relatescript. Exemplos incluem metáforas, termos vagos ou descrições de contexto comuns na comunicação humana.
Capacidade de processamento do LLMS : LLMs modernos como o GPT-4 são projetados para entender a linguagem natural e processá-la contextualmente. Eles já são capazes de interpretar instruções complexas sem exigir uma linguagem formalizada. Em muitos casos, os LLMs entendem a linguagem natural com precisão, portanto, o Relatescript oferece menos vantagens.
Este exemplo demonstra como o Relatescript pode ser usado para modelar fenômenos físicos, especificamente o efeito fotoelétrico na mecânica quântica.
define Planck_constant as "h = 6.62607015 × 10⁻³⁴ Js".
define Photon as "A quantum of light".
Photon has frequency of f.
Photon has energy of E.
Photon has count of N.
relate energy and frequency as "E = Planck_constant * f".
define Metal as "A metallic element".
Metal has work_function of Phi.
Metal has electron_energy of Ee.
define Electron as "An emitted electron".
Electron has kinetic_energy of Ek.
relate Photon and Metal as "interacts" if
(Photon.energy * Photon.count) >= Metal.work_function.
if Photon interacts with Metal,
then create Electron with kinetic_energy of max((Photon.energy * Photon.count) - Metal.work_function, 0).
Comportamento esperado: o sistema modela o efeito fotoelétrico em que os fótons interagem com uma superfície de metal. Quando a energia total dos fótons incidentes excede a função de trabalho do metal, os elétrons são emitidos com energia cinética igual à diferença entre a energia do fóton incidente e a função de trabalho.
Este exemplo mostra o potencial do Relatescript para expressar fenômenos físicos complexos de uma maneira que seja precisa o suficiente para fins computacionais e legível o suficiente para o entendimento humano. O idioma preenche a lacuna entre formalismo matemático e descrição da linguagem natural, tornando -a valiosa para aplicações educacionais e práticas em física e outros domínios científicos.
Relatescript encontra um nicho por:
Este exemplo mostra como o Relatescript pode modelar sistemas complexos de IA e suas interações.
define Agent as "A learning AI agent".
Agent has state of S.
Agent has action_space of A.
Agent has reward of R.
Agent has policy of π.
define Environment as "The agent's environment".
Environment has state_space of S.
Environment has transition_function of T.
Environment has reward_function of R.
relate Agent and Environment as "interacts" through "action".
relate Environment and Agent as "responds" with "state and reward".
if Agent takes Action in Environment,
then ensure Environment updates State according to transition_function and
ensure Agent receives Reward according to reward_function.
ensure Agent maximizes expected_future_reward.
Comportamento esperado: o sistema modela a interação de um agente de aprendizado de reforço com seu ambiente, incluindo transições, ações e recompensas do estado. A formulação Relatescript captura os componentes e relacionamentos essenciais de um sistema de aprendizado de reforço.
Este exemplo demonstra como o Relatescript pode ser usado para estruturar e monitorar ensaios clínicos.
define Patient as "A participant in the clinical study".
Patient has id of unique_number.
Patient has age of years.
Patient has symptoms of [].
Patient has treatment_group of "A" or "B".
Patient has response_measure of value.
define Treatment as "A therapeutic intervention".
Treatment has type of "Experimental" or "Control".
Treatment has dosage of amount.
Treatment has duration of weeks.
define Outcome as "The treatment result".
Outcome has primary_endpoint of value.
Outcome has adverse_events of [].
Outcome has followup_status of state.
relate Patient and Treatment as "receives".
relate Patient and Outcome as "shows".
if Patient receives Treatment,
then ensure Outcome is monitored and
ensure adverse_events are reported within 24 hours.
# Statistical Analysis Rules
define SignificanceTest as "Statistical evaluation".
relate Treatment_A and Treatment_B as "compare" through SignificanceTest.
ensure p_value < 0.05 for "statistical significance".
Comportamento esperado: o sistema gerencia um ensaio clínico rastreando pacientes, tratamentos e resultados. Garante o monitoramento adequado dos resultados e a análise estatística da eficácia do tratamento. A formulação Relatescript fornece uma maneira estruturada de definir e aplicar protocolos de ensaios clínicos.
Preveja as vendas com base em dados históricos e tendências de mercado.
define Product as "A sellable item".
Product has name of "Smartphone".
Product has historical_sales of [100, 150, 200, 250, 300].
define Market_Trend as "An indicator of market conditions affecting sales".
Market_Trend has trend of "Increasing".
define Sales_Prediction as "An estimated future sales figure".
Sales_Prediction has value of 350 if Market_Trend has trend of "Increasing" and Product has historical_sales[-1] < 350.
relate Product and Sales_Prediction as "predicted_sales".
ensure Product predicted_sales Sales_Prediction.
Comportamento esperado: o sistema deve prever as vendas futuras do "smartphone" com base na crescente tendência do mercado e no último número de vendas históricas registradas.
O Relatescript fornece uma estrutura estruturada e declarativa para tarefas que requerem precisão e consistência lógica, tornando-a uma ferramenta poderosa em aplicativos como representação de conhecimento, tomada de decisão e sistemas de IA. Sua sintaxe enfatiza a legibilidade e a facilidade de entendimento, permitindo que os usuários transmitam condições e objetivos complexos de uma maneira que ressoe com a linguagem humana natural.
Ao integrar o RelatesScript com a linguagem natural, os usuários podem aproveitar o melhor dos dois mundos - combinando as capacidades criativas intuitivas da linguagem natural com o rigor e a repetibilidade do raciocínio lógico. Essa abordagem híbrida amplia o escopo dos aplicativos do Relatescript e a posiciona como uma ferramenta essencial para aprimorar os fluxos de trabalho orientados por LLM, abrindo caminho para interações mais confiáveis, eficientes e automatizadas com grandes modelos de linguagem.
Trabalhos futuros podem envolver o teste do idioma em IA do mundo real e sistemas de gerenciamento de conhecimento. Mais pesquisas também se concentrarão em refinar a sintaxe do idioma, explorar sua escalabilidade e abordar possíveis vulnerabilidades de segurança.
Por Florian Fischer
https://github.com/fischerf/