Traduza a linguagem natural em consultas DSL para consultas OpenSearch e Elasticsearch - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Traduza a linguagem natural em consultas DSL para consultas OpenSearch e Elasticsearch

Tabby Ward, Nicholas Switzer e Breanne Warner, Amazon Web Services

Resumo

Esse padrão demonstra como usar modelos de linguagem grande (LLMs) para converter consultas de linguagem natural em linguagem específica de domínio de consulta (consulta DSL), o que facilita a interação dos usuários com serviços de pesquisa, como OpenSearch o Elasticsearch, sem amplo conhecimento da linguagem de consulta. Esse recurso é particularmente valioso para desenvolvedores e cientistas de dados que desejam aprimorar aplicações baseadas em pesquisa com recursos de consulta em linguagem natural, melhorando a experiência do usuário e a funcionalidade de pesquisa.

O padrão ilustra técnicas de engenharia de prompts, refinamento iterativo e incorporação de conhecimento especializado, todas cruciais na geração de dados sintéticos. Embora essa abordagem se concentre principalmente na conversão de consultas, ela demonstra implicitamente o potencial de aumento de dados e produção escalável de dados sintéticos. Essa base pode ser estendida para tarefas mais abrangentes de geração de dados sintéticos, para destacar o poder de unir entradas de LLMs linguagem natural não estruturadas com saídas estruturadas e específicas do aplicativo.

Essa solução não envolve ferramentas de migração ou implantação no sentido tradicional. Em vez disso, ele se concentra em demonstrar uma prova de conceito (PoC) para converter consultas de linguagem natural em consultas DSL usando. LLMs

  • O padrão usa um notebook Jupyter como step-by-step guia para configurar o ambiente e implementar a text-to-query conversão.

  • Ele usa o Amazon Bedrock para acessar LLMs, que são cruciais para interpretar a linguagem natural e gerar consultas apropriadas.

  • A solução foi projetada para funcionar com o Amazon OpenSearch Service. Você pode seguir um processo semelhante para o Elasticsearch, e é possível adaptar as consultas geradas para mecanismos de pesquisa semelhantes.

O Query DSL é uma linguagem de pesquisa flexível, baseada em JSON, usada para criar consultas complexas tanto no Elasticsearch quanto no. OpenSearch Ela permite a você especificar consultas no parâmetro de consulta das operações de pesquisa e oferece suporte a vários tipos de consulta. Uma consulta de DSL inclui consultas leaf e consultas compostas. As consultas leaf pesquisam valores específicos em determinados campos e abrangem consultas de texto completo, em nível de termo, geográficas, de junção, abrangência e especializadas. As consultas compostas atuam como invólucros para várias cláusulas leaf ou compostas e combinam seus resultados ou modificam seu comportamento. A query DSL oferece suporte para a criação de pesquisas sofisticadas, desde consultas simples de correspondência abrangente até consultas complexas com várias cláusulas que produzem resultados altamente específicos. A query DSL é particularmente valiosa para projetos que exigem recursos avançados de pesquisa, elaboração flexível de consultas e estruturas de consulta baseadas em JSON.

Esse padrão usa técnicas como solicitação de poucas fotos, solicitações do sistema, saída estruturada, encadeamento de solicitações, provisão de contexto e solicitações específicas de tarefas para conversão de DSL. text-to-query Para obter definições e exemplos dessas técnicas, consulte a seção Informações adicionais.

Pré-requisitos e limitações

Pré-requisitos

Para usar o caderno Jupyter com eficiência para converter consultas em linguagem natural em query DSL, você precisa:

  • Familiaridade com cadernos Jupyter. Compreensão básica de como navegar e executar código em um ambiente de caderno Jupyter.

  • Ambiente Python. Um ambiente Python funcional, preferencialmente Python 3.x, com as bibliotecas necessárias instaladas.

  • Elasticsearch ou OpenSearch conhecimento. Conhecimento básico do Elasticsearch or OpenSearch, incluindo sua arquitetura e como realizar consultas.

  • Conta da AWS. Um ativo Conta da AWS para acessar o Amazon Bedrock e outros serviços relacionados.

  • Bibliotecas e dependências. Instalação de bibliotecas específicas mencionadas no notebook, como boto3 para AWS interação e quaisquer outras dependências necessárias para a integração do LLM.

  • Acesso a modelos no Amazon Bedrock. Esse padrão usa três Claude LLMs da Anthropic. Abra o console do Amazon Bedrock e escolha Acesso a modelos. Na próxima tela, escolha Habilitar modelos específicos e selecione estes três modelos:

    • Claude 3 Sonnet

    • Claude 3.5 Sonnet

    • Claude 3 Haiku

  • Políticas do IAM e perfil do IAM adequados. Para executar o notebook em um Conta da AWS, sua função AWS Identity and Access Management (IAM) requer a SagemakerFullAccess política, bem como a política fornecida na seção Informações adicionais, que você pode nomearAPGtext2querydslpolicy. Essa política inclui a assinatura dos três modelos do Claude listados.

Ter esses pré-requisitos estabelecidos garante uma experiência tranquila ao trabalhar com o notebook e implementar a funcionalidade. text-to-query

Limitações

  • Status da prova de conceito. Este projeto serve principalmente como uma prova de conceito (PoC). Ele demonstra o potencial do uso LLMs para converter consultas de linguagem natural em DSL de consulta, mas pode não estar totalmente otimizado ou pronto para produção.

  • Limitações do modelo:

    Restrições da janela de contexto. Ao usar os LLMs que estão disponíveis no Amazon Bedrock, esteja ciente das limitações da janela de contexto:

    Modelos do Claude (em setembro de 2024):

    • Claude 3 Opus: 200 mil tokens

    • Claude 3 Sonnet: 200 mil tokens

    • Claude 3 Haiku: 200 mil tokens

    Outros modelos no Amazon Bedrock podem ter tamanhos de janela de contexto diferentes. Para obter as informações mais atualizadas, consulte a documentação mais recente.

    Disponibilidade do modelo. A disponibilidade de modelos específicos no Amazon Bedrock pode variar. Certifique-se de ter acesso aos modelos necessários antes de implementar essa solução.

  • Limitações adicionais

    • Complexidade das consultas. A eficácia da linguagem natural para a conversão em query DSL pode variar dependendo da complexidade da consulta de entrada.

    • Compatibilidade da versão. A consulta DSL gerada pode precisar de ajustes com base na versão específica do Elasticsearch ou na OpenSearch que você usa.

    • Desempenho. Este padrão fornece uma implementação de PoC, portanto, a velocidade e a precisão da geração de consultas podem não ser ideais para uso em produção em grande escala.

    • Custos. O uso LLMs no Amazon Bedrock gera custos. Esteja ciente da estrutura de preços do modelo escolhido. Para obter mais informações, consulte Preços do Amazon Bedrock.

    • Manutenção. Atualizações regulares nos prompts e na seleção de modelos podem ser necessárias para acompanhar os avanços na tecnologia de LLMs e as mudanças na sintaxe da query DSL.

Versões do produto

Essa solução foi testada no Amazon OpenSearch Service. Se você quiser usar o Elasticsearch, talvez seja necessário fazer algumas alterações para replicar a funcionalidade exata desse padrão.

  • OpenSearch compatibilidade de versões. OpenSearch mantém a compatibilidade com versões anteriores nas versões principais. Por exemplo:

    • OpenSearch Os clientes 1.x geralmente são compatíveis com clusters OpenSearch 1.x.

    • OpenSearch Os clientes 2.x geralmente são compatíveis com clusters OpenSearch 2.x.

    No entanto, é sempre melhor usar a mesma versão secundária para o cliente e o cluster, quando possível.

  • OpenSearch Compatibilidade de API. OpenSearch mantém a compatibilidade da API com o Elasticsearch OSS 7.10.2 para a maioria das operações. No entanto, existem algumas diferenças, especialmente nas versões mais recentes.

  • OpenSearch considerações de atualização:

Considerações para o Elasticsearch

  • Versão do Elasticsearch. A versão principal do Elasticsearch que você está usando é crucial, pois a sintaxe e os recursos da consulta podem mudar entre as versões principais. Atualmente, a versão estável mais recente é o Elasticsearch 8.x. Certifique-se de que as consultas sejam compatíveis com sua versão específica do Elasticsearch.

  • Versão da biblioteca de query DSL do Elasticsearch. Se você estiver usando a biblioteca de Python de query DSL do Elasticsearch, certifique-se de que a versão corresponda à sua versão do Elasticsearch. Por exemplo:

    • Para o Elasticsearch 8.x, use uma versão de elasticsearch-dsl posterior ou igual à 8.0.0, mas anterior à 9.0.0.

    • Para o Elasticsearch 7.x, use uma versão de elasticsearch-dsl posterior ou igual à 7.0.0, mas anterior à 8.0.0.

  • Versões da biblioteca do cliente. Se você estiver usando o cliente oficial do Elasticsearch ou um cliente específico de linguagem, certifique-se de que ele seja compatível com sua versão do Elasticsearch.

  • Versão da query DSL. A query DSL evolui com as versões do Elasticsearch. Alguns tipos ou parâmetros de consulta podem estar obsoletos ou serem introduzidos em versões diferentes.

  • Versão de mapeamento. A maneira de definir mapeamentos para os índices pode mudar entre as versões. Sempre verifique a documentação de mapeamento para sua versão específica do Elasticsearch.

  • Versões de ferramentas de análise. Se você estiver usando analisadores, tokenizadores ou outras ferramentas de análise de texto, o comportamento ou a disponibilidade deles pode mudar entre as versões.

Arquitetura

Arquitetura de destino

O diagrama a seguir ilustra a arquitetura desse padrão.

Arquitetura para traduzir a linguagem natural em query DSL no Amazon Bedrock.

em que:

  1. Entrada do usuário e prompt do sistema com exemplos de prompts few-shot. O processo começa com um usuário que fornece uma consulta em linguagem natural ou uma solicitação para geração de esquema.

  2. Amazon Bedrock. A entrada é enviada para o Amazon Bedrock, que serve como interface para acessar o LLM do Claude.

  3. LLM Sonnet do Claude 3 O Amazon Bedrock usa o Claude 3 Sonnet da família Claude 3 para processar LLMs a entrada. Ele interpreta e gera o Elasticsearch ou OpenSearch DSL de consulta apropriado. Para solicitações de esquema, ele gera mapeamentos ou Elasticsearch sintéticos. OpenSearch

  4. Geração de query DSL. Para consultas em linguagem natural, o aplicativo pega a saída do LLM e a formata em uma DSL de consulta válida do Elasticsearch ou OpenSearch Service.

  5. Geração de dados sintéticos. O aplicativo também usa esquemas para criar Elasticsearch sintético ou OpenSearch dados para serem carregados em uma coleção sem OpenSearch servidor para testes.

  6. OpenSearch ou Elasticsearch. A consulta DSL gerada é consultada em relação a uma coleção OpenSearch Serverless em todos os índices. A saída JSON contém os dados relevantes e o número de ocorrências dos dados que residem na coleção OpenSearch Serverless.

Automação e escala

O código fornecido com esse padrão é criado estritamente para fins de PoC. A lista a seguir fornece algumas sugestões para automatizar e escalar ainda mais a solução e mover o código para a produção. Esses aprimoramentos estão fora do escopo desse padrão.

  • Conteinerização:

    • Coloque a aplicação em um contêiner do Docker para garantir a consistência em diferentes ambientes.

    • Use plataformas de orquestração de contêiner, como o Amazon Elastic Container Service (Amazon ECS) ou o Kubernetes, para implantações escaláveis.

  • Arquitetura com tecnologia sem servidor:

    • Converta a funcionalidade principal em AWS Lambda funções.

    • Use o Amazon API Gateway para criar RESTful endpoints para a entrada da consulta em linguagem natural.

  • Processamento assíncrono:

    • Implemente o Amazon Simple Queue Service (Amazon SQS) para enfileirar consultas recebidas.

    • Use AWS Step Functions para orquestrar o fluxo de trabalho de processamento de consultas e geração de consultas DSL.

  • Armazenamento em cache:

    • Implemente um mecanismo para armazenar os prompts em cache.

  • Monitoramento e registro em log:

    • Use a Amazon CloudWatch para monitoramento e alertas.

    • Implemente o registro centralizado com o Amazon CloudWatch Logs ou o Amazon OpenSearch Service para análise de registros.

  • Melhorias de segurança:

    • Implemente perfis do IAM para controle de acesso refinado.

    • Use AWS Secrets Manager para armazenar e gerenciar com segurança as chaves e credenciais da API.

  • Implantação multirregião:

    • Considere implantar a solução em vários Regiões da AWS para melhorar a latência e a recuperação de desastres.

    • Use o Amazon Route 53 para roteamento inteligente de solicitações.

Ao implementar essas sugestões, você pode transformar essa PoC em uma solução robusta, escalável e pronta para produção. Convém testar completamente cada componente e todo o sistema antes da implantação completa.

Ferramentas

Ferramentas

  • Os notebooks Amazon SageMaker AI são notebooks Jupyter totalmente gerenciados para desenvolvimento de aprendizado de máquina. Esse padrão usa notebooks como um ambiente interativo para exploração de dados, desenvolvimento de modelos e experimentação na Amazon SageMaker AI. Os notebooks oferecem integração perfeita com outros recursos de SageMaker IA e. Serviços da AWS

  • Python é uma linguagem de programação de computador de uso geral. Este padrão usa Python como a linguagem principal para implementar a solução.

  • O Amazon Bedrock é um serviço totalmente gerenciado que disponibiliza modelos básicos de alto desempenho (FMs) das principais startups de IA e da Amazon para seu uso por meio de uma API unificada. O Amazon Bedrock fornece acesso ao processamento LLMs de linguagem natural. Este padrão usa modelos da Anthropic para o Claude 3.

  • AWS SDK para Python (Boto3)é um kit de desenvolvimento de software que ajuda você a integrar seu aplicativo, biblioteca ou script em Python, incluindo o Amazon Serviços da AWS Bedrock.

  • O Amazon OpenSearch Service é um serviço gerenciado que ajuda você a implantar, operar e escalar clusters de OpenSearch serviços na nuvem da AWS. Esse padrão usa o OpenSearch Service como o sistema de destino para gerar a consulta DSL.

Repositório de código

O código desse padrão está disponível no repositório GitHub Prompt Engineering Text-to-QueryDSL Using Claude 3 Models. O exemplo usa uma aplicação de rede social de saúde que cria publicações para usuários e perfis de usuário associados à aplicação de saúde.

Práticas recomendadas

Ao trabalhar com esta solução, considere o seguinte:

  • A necessidade de AWS credenciais e permissões adequadas para acessar o Amazon Bedrock

  • Custos potenciais associados ao uso Serviços da AWS e LLMs

  • A importância de ter conhecimento em query DSL para validar e possivelmente modificar as consultas geradas

Épicos

TarefaDescriptionHabilidades necessárias

Configure o ambiente de desenvolvimento.

  1. Instale os pacotes Python necessários, incluindo boto3, numpy, awscli, opensearch-py e requests-aws4auth usando pip.

  2. Importe os módulos necessários, como boto3, json, os, opensearch de opensearchpy, RequestsHttpConnection de Opensearchpy, bulk de opensearchpy.helpers, sagemaker, time, random, re e AWS4Auth de requests_aws4auth.

Python, pip, AWS SDK

Configure o AWS acesso.

Configure o cliente Amazon Bedrock e a sessão de SageMaker IA. Recupere o Amazon Resource Name (ARN) para SageMaker a função de execução de IA para uso posterior na criação OpenSearch da coleção Serverless.

IAM, AWS CLI, Amazon Bedrock, Amazon SageMaker

Carregue os esquemas de aplicações de saúde.

Leia e analise esquemas JSON para publicações de saúde e perfis de usuário com base em arquivos predefinidos. Converta esquemas em strings para uso posterior em prompts.

DevOps engenheiro, AWS geral, Python, JSON
TarefaDescriptionHabilidades necessárias

Crie um gerador de dados baseado em LLM.

Implemente a função generate_data() para chamar a API Converse do Amazon Bedrock com modelos do Claude 3. Configure o modelo IDs para Sonnet, Sonnet 3.5 e Haiku:

model_id_sonnet3_5 = "anthropic.claude-3-5-sonnet-20240620-v1:0" model_id_sonnet = "anthropic.claude-3-sonnet-20240229-v1:0" model_id_haiku = "anthropic.claude-3-haiku-20240307-v1:0"
Python, API do Amazon Bedrock, prompts de LLM

Crie publicações de saúde sintéticas.

Use a função generate_data() com um prompt de mensagem específico para criar entradas de publicação de saúde sintéticas com base no esquema fornecido. Este é um exemplo de chamada de função:

health_post_data = generate_data(bedrock_rt, model_id_sonnet, system_prompt, message_healthpost, inference_config)
Python, JSON

Crie perfis de usuário sintéticos.

Use a função generate_data() com um prompt de mensagem específico para criar entradas de perfil de usuário sintéticas com base no esquema fornecido. O processo é semelhante à geração de publicações de saúde, mas usa um prompt diferente.

Python, JSON
TarefaDescriptionHabilidades necessárias

Configure uma coleção OpenSearch sem servidor.

Use o Boto3 para criar uma coleção OpenSearch sem servidor com políticas apropriadas de criptografia, rede e acesso. Este é um exemplo de criação da coleção:

collection = aoss_client.create_collection(name=es_name, type='SEARCH')

Para obter mais informações sobre o OpenSearch Serverless, consulte a AWS documentação.

OpenSearch Sem servidor, IAM

Defina OpenSearch índices.

Crie índices para postos de saúde e perfis de usuário usando o OpenSearch cliente, com base nos mapeamentos de esquema predefinidos. Este é um exemplo de criação do índice:

response_health = oss_client.indices.create(healthpost_index, body=healthpost_body)
OpenSearch, JSON

Carregue dados em OpenSearch.

Execute a função ingest_data () para inserir em massa as publicações de saúde sintéticas e os perfis de usuário em seus respectivos índices. OpenSearch A função usa o assistente de operações em massa de opensearch-py:

success, failed = bulk(oss_client, actions)
Python, OpenSearch API, operações de dados em massa
TarefaDescriptionHabilidades necessárias

Crie alguns exemplos de prompts few-shot.

Gere exemplos de consultas e perguntas em linguagem natural correspondentes usando modelos do Claude 3 para servir como exemplos de few-shot para a geração de consultas. O prompt do sistema inclui estes exemplos:

system_prompt_query_generation = [{"text": f"""You are an expert query dsl generator. ... Examples: {example_prompt} ..."""}]
Prompts de LLM, query DSL

Crie um conversor text-to-query DSL.

Implemente o prompt do sistema, que inclui esquemas, dados e exemplos de few-shot, para geração de consultas. Use o prompt do sistema para converter consultas em linguagem natural em query DSL. Este é um exemplo de chamada de função:

query_response = generate_data(bedrock_rt, model_id, system_prompt_query_generation, query, inference_config)
Python, API do Amazon Bedrock, prompts de LLM

Teste a consulta DSL ativada. OpenSearch

Execute a função query_oss () para executar a consulta DSL gerada na coleção OpenSearch Serverless e retornar os resultados. A função usa o método de pesquisa do OpenSearch cliente:

response = oss_client.search(index="_all", body=temp)
Python, OpenSearch API, consulta DSL
TarefaDescriptionHabilidades necessárias

Crie um conjunto de consultas de teste.

Use o Claude 3 para gerar um conjunto diversificado de perguntas de teste com base nos dados e esquemas sintéticos:

test_queries = generate_data(bedrock_rt, model_id_sonnet, query_system_prompt, query_prompt, inference_config)
Prompts de LLM

Avalie a precisão da conversão de query DSL.

Teste a consulta DSL gerada executando consultas OpenSearch e analisando a relevância e a precisão dos resultados retornados. Isso envolve executar a consulta e inspecionar as ocorrências:

output = query_oss(response1) print("Response after running query against Opensearch") print(output)
Python, análise de dados, query DSL

Compare os modelos do Claude 3

Compare a performance de diferentes modelos do Claude 3 (Haiku, Sonnet, Sonnet 3.5) para geração de consultas em termos de precisão e latência. Para comparar, altere o model_id quando você chamar generate_data() e calcule o tempo de execução.

Python, avaliação comparativa de performance
TarefaDescriptionHabilidades necessárias

Desenvolva um processo de limpeza.

Exclua todos os índices da coleção OpenSearch Serverless após o uso.

Python, SDK da AWS, API OpenSearch

Recursos relacionados

Mais informações

Política do IAM

Esta é a política APGtext2querydslpolicy para o perfil do IAM usado neste padrão:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::sagemaker-*", "arn:aws:s3:::sagemaker-*/*" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/sagemaker/*" }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DeleteNetworkInterface" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "aoss:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole", "sagemaker:*" ], "Resource": [ "arn:aws:iam::*:role/*", "*" ], "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "codecommit:GetBranch", "codecommit:GetCommit", "codecommit:GetRepository", "codecommit:ListBranches", "codecommit:ListRepositories" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "aws-marketplace:Subscribe" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws-marketplace:ProductId": [ "prod-6dw3qvchef7zy", "prod-m5ilt4siql27k", "prod-ozonys2hmmpeu" ] } } }, { "Effect": "Allow", "Action": [ "aws-marketplace:Unsubscribe", "aws-marketplace:ViewSubscriptions" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:*", "Resource": "*" } ] }

Técnicas de geração de prompts com modelos da Anthropic para o Claude 3

Esse padrão demonstra as seguintes técnicas de solicitação para conversão text-to-query DSL usando modelos Claude 3.

  • Prompts few-shot: a geração de prompts few-shot é uma técnica poderosa para melhorar a performance dos modelos do Claude 3 no Amazon Bedrock. Essa abordagem envolve fornecer ao modelo um pequeno número de exemplos que demonstram o input/output comportamento desejado antes de solicitar que ele execute uma tarefa semelhante. Quando você usa modelos do Claude 3 no Amazon Bedrock, os prompts few-shot podem ser particularmente eficazes para tarefas que exigem formatação específica, padrões de raciocínio ou conhecimento de domínio. Para implementar essa técnica, você normalmente estrutura seu prompt com dois componentes principais: a seção de exemplo e a consulta real. A seção de exemplo contém um ou mais input/output pares que ilustram a tarefa, e a seção de consulta apresenta a nova entrada para a qual você deseja uma resposta. Esse método ajuda o Claude 3 a entender o contexto e o formato de saída esperado e geralmente resulta em uma resposta mais precisa e consistente.

    Exemplo:

    "query": { "bool": { "must": [ {"match": {"post_type": "recipe"}}, {"range": {"likes_count": {"gte": 100}}}, {"exists": {"field": "media_urls"}} ] } } Question: Find all recipe posts that have at least 100 likes and include media URLs.
  • Prompts do sistema: além de alguns prompts few-shot, os modelos do Claude 3 no Amazon Bedrock também oferecem suporte ao uso de prompts do sistema. Os prompts do sistema são uma forma de fornecer contexto geral, instruções ou diretrizes ao modelo antes de apresentá-lo com entradas específicas do usuário. Eles são particularmente úteis para definir o tom, definir o perfil do modelo ou estabelecer restrições para toda a conversa. Para usar um prompt do sistema com o Claude 3 no Amazon Bedrock, inclua o parâmetro system da sua solicitação de API. Esse processo é separado das mensagens do usuário e se aplica a toda a interação. Os prompts detalhados do sistema são usados para definir o contexto e fornecer diretrizes para o modelo.

    Exemplo:

    You are an expert query dsl generator. Your task is to take an input question and generate a query dsl to answer the question. Use the schemas and data below to generate the query. Schemas: [schema details] Data: [sample data] Guidelines: - Ensure the generated query adheres to DSL query syntax - Do not create new mappings or other items that aren't included in the provided schemas.
  • Saída estruturada: você pode instruir o modelo a fornecer a saída em formatos específicos, como JSON ou em marcações XML.

    Exemplo:

    Put the query in json tags
  • Encadeamento de prompts: o caderno usa a saída de uma chamada de LLM como entrada para outra, como usar dados sintéticos gerados para criar exemplos de perguntas.

  • Fornecimento de contexto: o contexto relevante, incluindo esquemas e dados de amostra, é fornecido nos prompts.

    Exemplo:

    Schemas: [schema details] Data: [sample data]
  • Prompts de tarefas específicas: prompts diferentes são criados para tarefas específicas, como gerar dados sintéticos, criar exemplos de perguntas e converter consultas em linguagem natural em query DSL.

    Exemplo para gerar perguntas de teste:

    Your task is to generate 5 example questions users can ask the health app based on provided schemas and data. Only include the questions generated in the response.