Relatescript es un metanenguaje declarativo diseñado para optimizar la creación de indicaciones estructuradas y consistentes para modelos de idiomas grandes (LLM). Este documento presenta la sintaxis de RelateScript, destacando su base en la lógica relacional y de predicado. Al centrarse en las relaciones, las condiciones y el contexto, RelatateScript une la brecha entre la expresividad del lenguaje natural y la precisión requerida para la interacción efectiva de LLM. Facilita un enfoque novedoso para la ingeniería rápida, donde los humanos y los LLM desarrollan colaborativamente las indicaciones estructuradas que pueden modificarse y reutilizarse fácilmente para diversas tareas, mejorando las capacidades de confiabilidad y automatización de los flujos de trabajo impulsados por LLM.
En el campo en rápida evolución de los modelos de idiomas grandes (LLM), la efectividad de las interacciones depende en gran medida de la calidad de las indicaciones. Los lenguajes de programación imperativos tradicionales a menudo imponen estructuras rígidas que contrastan con la naturaleza matizada y sensible al contexto del razonamiento humano. Si bien el lenguaje natural ofrece una flexibilidad incomparable para interactuar con LLMS, puede conducir a la ambigüedad y la inconsistencia en los resultados rápidos. Para abordar estos desafíos, presentamos RelateScript, un metanenguaje declarativo diseñado específicamente para la elaboración de indicaciones estructuradas. Relatescript permite a los usuarios definir entidades, relaciones y condiciones en un formato que sea legible y lógicamente preciso. Relatescript no pretende ser un lenguaje de programación tradicional con un analizador separado, sino más bien como un formato de entrada estructurado que aprovecha las capacidades de comprensión inherente de los LLM.
Relatescript aborda la creciente necesidad de un enfoque más sistemático y confiable para la ingeniería rápida. A medida que los LLM se vuelven cada vez más sofisticados, la capacidad de articular instrucciones complejas y definir condiciones precisas se vuelve crucial para aprovechar su máximo potencial. Relatescript proporciona una forma accesible e intuitiva de describir las relaciones y dependencias entre las entidades, lo que permite a los usuarios expresar la lógica intrincada de una manera que se alinee estrechamente con el razonamiento humano. Con una sintaxis diseñada para la legibilidad, Relatescript permite a los usuarios generar indicaciones consistentes, lo que lo hace particularmente adecuado para construir plantillas de inmediato reutilizables que se pueden adaptar para diferentes escenarios, lo que mejora la eficiencia y la confiabilidad de las interacciones LLM. También permite combinar las fortalezas del conocimiento del dominio humano con la estructura de una forma lógica.
La sintaxis de Relatescript enfatiza la estructura del lenguaje natural, lo que permite declaraciones legibles de entidades, relaciones y condiciones. Sus construcciones principales incluyen:
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>.
Un mensaje con instrucciones compuestas y lógica multinivel.
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.
Comportamiento esperado: el LLM debería reconocer que Berlín es una "metrópolis" porque su población es mayor de 1,000,000.
Más muestras
La siguiente forma extendida Backus-Naur (EBNF) define la sintaxis de 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 " ;
Estructura principal ( program
) : un programa (rápido) consiste en una secuencia de statements
, cada una de las cuales define una pieza particular de información, relación o declaración.
Declaraciones :
definition
): Define una entidad con un nombre y una descripción.predicate
): asigna una propiedad o estado a una entidad.attribute
): asocia una entidad con un atributo y un valor.relation
): define una relación entre dos entidades, opcionalmente con una condición.condition
): define una condición y una acción resultante.goal
): describe un objetivo que se debe lograr.condition_expr
): verifique las relaciones o propiedades entre las entidades.goal_expr
): Describa lo que debe lograrse.action
): Relacione con el objetivo que se debe cumplir.entity
, predicate_value
, attribute_name
, attribute_value
y relation_type
son componentes básicos representados por identificadores (nombres por ejemplo) o valores (como números).predicate_operator
, attribute_operator
y relation_operator
Definen el tipo de relaciones o condiciones, por ejemplo, "es", "ha", "se relaciona con".identifier
representa nombres y debe comenzar con una letra.string
significa texto y se adjunta en comillas. Relatescript ofrece un marco estructurado e impulsado por la lógica que complementa sin problemas enfoques de solicitud basados en el lenguaje natural. Si bien el lenguaje natural sobresale en la transmisión de matices y ambigüedad, particularmente para tareas creativas, RelateScript proporciona claridad, precisión y consistencia lógica, cualidades esenciales para interacciones complejas y de múltiples pasos con LLM.
RelateScript puede emparejarse de manera efectiva con entradas de lenguaje natural para combinar las fortalezas de ambos métodos:
Por ejemplo, un usuario podría comenzar con un mensaje de lenguaje natural como:
"Ayúdame a construir un modelo de ventas. Comience haciendo suposiciones básicas sobre clientes y productos".
Este contexto puede ser compatible con un bloque relatado:
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.
Esta combinación permite a los LLM aprovechar la configuración intuitiva y rica en contexto del lenguaje natural mientras se adhiere a la estructura lógica y la precisión de RelateScript.
RelateScript se alinea con las técnicas avanzadas de solicitación para LLM, como:
RelateScript es ideal para tareas que requieren:
Sin embargo, el lenguaje natural sigue siendo superior para:
El uso más efectivo de Relatescript se encuentra en su aplicación híbrida, donde actúa como un suplemento para las entradas del lenguaje natural. Este enfoque permite a los usuarios equilibrar la creatividad y la consistencia lógica, lo que permite a los LLM manejar una gama más amplia de tareas con precisión y adaptabilidad. Abogamos por un flujo de trabajo iterativo donde las indicaciones relacionadas con los informes se refinan continuamente en función de la retroalimentación de LLM, lo que lleva a interacciones cada vez más efectivas y confiables.
Varios idiomas y marcos ofrecen capacidades relacionales, declarativas o sensibles al contexto. Aquí, comparamos RelateScript con sistemas similares.
Prolog es un lenguaje de programación lógica comúnmente utilizado en la IA. Utiliza hechos y reglas para derivar nueva información.
Datalog es una versión simplificada de Prolog, utilizada para consultas de bases de datos y razonamiento lógico.
Los datos del modelo SPARQL y RDF como un gráfico de las relaciones de objeto-objeto de sujeto, a menudo para la web semántica.
Descripción La lógica es un lenguaje formal para la representación del conocimiento en ontologías.
Los motores de reglas utilizan reglas declarativas para la toma de decisiones automatizadas en aplicaciones comerciales.
if-then
, como las condiciones y objetivos de Relatescript.La estructura de RelateScript es ideal para:
Investigación científica :
Sistemas de IA :
Representación del conocimiento : entidades de modelado, atributos y relaciones dentro de un dominio específico.
Sistemas de toma de decisiones : utilizando objetivos y condiciones para ajustar dinámicamente el comportamiento del programa.
Claridad y precisión : RELATRECECTR está claramente estructurado, con reglas y términos definidos. Esto reduce la ambigüedad que a menudo se encuentra en el lenguaje natural y garantiza que el LLM interprete correctamente el significado previsto.
Relaciones y condiciones claras : la estructura declarativa de RelateStcript es particularmente adecuada para formular explícitamente conexiones y condiciones. Esto puede ayudar a un LLM a sacar conclusiones o coordinar pasos secuenciales.
Interpretación reducida : Dado que RelateScript se basa en una gramática lógica, el "trabajo de interpretación" para un LLM es a menudo más fácil. Requiere menos comprensión contextual del lenguaje en sí y puede centrarse en las instrucciones.
Comprensibilidad y accesibilidad : para muchos usuarios, el lenguaje natural es más intuitivo y más fácil de usar, ya que no requiere una estructura específica o una sintaxis definida. Esta es una ventaja cuando las instrucciones para el LLM son creadas por no programadores.
Flexibilidad y expresividad : el lenguaje natural es mucho más flexible y puede transmitir instrucciones complejas y matizadas que son más difíciles de expresar en un sistema altamente estructurado como Relatescrates. Los ejemplos incluyen metáforas, términos vagos o descripciones de contexto comunes en la comunicación humana.
Capacidad de procesamiento de LLM : las LLM modernas como GPT-4 están diseñadas para comprender el lenguaje natural y procesarlo contextualmente. A menudo ya son capaces de interpretar instrucciones complejas sin requerir un lenguaje formal. En muchos casos, los LLM comprenden el lenguaje natural con la suficiente precisión, por lo que Relatescript ofrece menos ventajas.
Este ejemplo demuestra cómo RELateScript se puede utilizar para modelar fenómenos físicos, específicamente el efecto fotoeléctrico en la mecánica cuá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).
Comportamiento esperado: el sistema modela el efecto fotoeléctrico donde los fotones interactúan con una superficie de metal. Cuando la energía total de los fotones incidentes excede la función de trabajo del metal, los electrones se emiten con energía cinética igual a la diferencia entre la energía del fotón incidente y la función de trabajo.
Este ejemplo muestra el potencial de Relatescript para expresar fenómenos físicos complejos de una manera que sea lo suficientemente precisa para fines computacionales y lo suficientemente legibles para la comprensión humana. El lenguaje une la brecha entre el formalismo matemático y la descripción del lenguaje natural, por lo que es valiosa para las aplicaciones educativas y prácticas en física y otros dominios científicos.
Relatescript encuentra un nicho de:
Este ejemplo muestra cómo Relatescript puede modelar sistemas de IA complejos y sus interacciones.
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.
Comportamiento esperado: el sistema modela la interacción de un agente de aprendizaje de refuerzo con su entorno, incluidas las transiciones, acciones y recompensas estatales. La formulación RelatateScript captura los componentes y relaciones esenciales de un sistema de aprendizaje de refuerzo.
Este ejemplo demuestra cómo se puede utilizar Relatescript para estructurar y monitorear los ensayos 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".
Comportamiento esperado: el sistema gestiona un ensayo clínico al rastrear pacientes, tratamientos y resultados. Asegura un monitoreo adecuado de los resultados y el análisis estadístico de la efectividad del tratamiento. La formulación RELATRECTcript proporciona una forma estructurada de definir y hacer cumplir los protocolos de ensayos clínicos.
Predecir las ventas basadas en datos históricos y tendencias del 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.
Comportamiento esperado: el sistema debería predecir las ventas futuras del "teléfono inteligente" en función de la tendencia del mercado creciente y la última cifra de ventas históricas registradas.
Relatescript proporciona un marco estructurado y declarativo para tareas que requieren precisión y consistencia lógica, lo que lo convierte en una herramienta poderosa en aplicaciones como la representación del conocimiento, la toma de decisiones y los sistemas de IA. Su sintaxis enfatiza la legibilidad y la facilidad de comprensión, lo que permite a los usuarios transmitir condiciones y objetivos complejos de una manera que resuena con el lenguaje humano natural.
Al integrar Relatescript con la solicitud de lenguaje natural, los usuarios pueden aprovechar lo mejor de ambos mundos, combinando las capacidades intuitivas y creativas del lenguaje natural con el rigor y la repetibilidad del razonamiento lógico. Este enfoque híbrido amplía el alcance de las aplicaciones de Relatescript y lo posiciona como una herramienta esencial para mejorar los flujos de trabajo impulsados por LLM, allanando el camino para interacciones más confiables, eficientes y automatizadas con modelos de idiomas grandes.
El trabajo futuro podría implicar probar el lenguaje en la IA del mundo real y los sistemas de gestión del conocimiento. La investigación adicional también se centrará en refinar la sintaxis del idioma, explorar su escalabilidad y abordar posibles vulnerabilidades de seguridad.
Por Florian Fischer
https://github.com/fischerf/