Usando as configurações de AI do LaunchDarkly para revisar as alterações do banco de dados
Visão geral no LaunchDarkly, estamos constantemente empurrando os limites do que significa se mover rapidamente sem quebrar as coisas. Enviamos frequentemente, servimos quadrilns de eventos por dia e operamos com tolerância zero por tempo de inatividade. Para acompanhar o ritmo, precisamos de sistemas que nos ajudem a enviar com confiança – mesmo quando a mudança está acontecendo em um ritmo rápido de “codificação de vibração”. Mas o que acontece quando essa mudança rápida atinge seu banco de dados? Do ponto de vista de um SRE, o banco de dados é sagrado. É a fonte da verdade – e uma das áreas mais arriscadas a tocar sem contexto profundo. Mesmo que seu código seja revisado em uma solicitação de tração: o revisor entende os padrões de acesso à consulta? Essa mudança de esquema poderia prejudicar o desempenho do índice? A mudança está tocando tabelas críticas de produção? O novo modelo vai escalar com uso? Com as configurações de AI do LaunchDarkly, finalmente temos uma maneira de automatizar esse tipo de insight – revisando as alterações no banco de dados antes que elas se tornem problemas de produção. Pré -requisitos para acompanhar, você precisará: uma conta do LaunchDarkly com as configurações de IA ativadas. Inscreva -se gratuitamente aqui .. Acesso a um sistema de banco de dados. Essas amostras de código são gravadas para serem compatíveis com um banco de dados usando o protocolo PostGresql Wire. No entanto, você pode adaptá -los para se adequar a outros sabores de bancos de dados. Familiaridade básica com SQL e gerenciamento de esquema de banco de dados Um ambiente de desenvolvimento em que você pode testar alterações no banco de dados O que são as configurações de IA? As configurações de IA do LaunchDarkly permitem personalizar, testar e lançar novos modelos de idiomas grandes (LLMS) em seus aplicativos generativos de IA. 🧠 O que o revisor da IA verifica nosso sistema usa as configurações internas da AI da LaunchDarkly para analisar seu esquema e consulta muda diretamente de uma compilação de IC. Ele verifica: as consultas são otimizadas para padrões de acesso? Os índices certos estão em vigor? Estamos modificando tabelas de alto risco? O esquema escalará e evoluirá com o tempo? Este não é apenas um linhador. É um revisor de IA treinado em seu ambiente. Se você deseja pular a direita para ler o código, um exemplo completo pode ser encontrado aqui. # 🛠 Etapa 1: Colete os dados certos A IA precisa de um instantâneo completo do seu sistema para fazer uma revisão significativa: esquema completo (schema.json) schema diff (schema-diff.json) conjunto completo de consultas sql (sql-quadries.json) consulta Diff (consulta tons-sff.json) 📦 📦 📦 ql-quadries. SQL consulta seu aplicativo é executado durante o CI. Fazemos isso inserindo um proxy leve PostGresql entre o seu aplicativo e o banco de dados. Ele registra e desduplica as consultas e as expõe por meio de uma API para análise. Aqui está a configuração do Docker Compõe/Github Action Service Container: Services: Postgres: Imagem: Postgres Env: Postgres_pass_word: Postgres Portas: – 5432: 5432 Proxy: Image: GHCR.IO/$ {{Github.repositório_owner}}/sql -supxy Backend_port: 5432 api_port: 8080 db_connection_string: host = porta pósgres = 5432 Usuário = Postgres senha = Postgres sslmode = Desativar portas: – 5433: 5433 – 8080: 8080 Entre consultas através do proxy. 🏗 Despendo o esquema para fornecer o contexto completo da IA, também precisamos de um instantâneo do esquema do banco de dados – incluindo definições de tabela, colunas, índices e relacionamentos. Isso pode ser acionado no início do pipeline de IC para ser executado em paralelo com suas outras etapas: – Nome: Migre Banco de dados Executar: | CD Schema_test Go Run. – Nome: Start Schema Dump Run: | Curl -x Post Digite Modo de tela cheia Modo de tela cheia ⏱️ Nota: Para esquemas grandes, isso pode levar um minuto ou dois. O desencadeador com mais cedo (mas após as migrações) evita bloquear os trabalhos a jusante. 📊 Step 2: Compare Against Main After your tests or migrations run through the proxy, it now holds: The full set of SQL queries the app executed The current state of the database schema With this data captured, you can run a GitHub Action that: Calls the proxy’s API to fetch the captured data Downloads artifacts from the main branch (last known good state) Note: it needs to run on the main branch at least once to have generated Um artefato adequado para comparação compara a corrente vs. principal a gerar: schema-diff.json Queries-diff.json Aqui está o que se parece em CI:-Nome: Get SQL Data Usa: DropTableXists/Recon@Principal ID: Get-SQL-Data com: SQL_Proxy_Api_AdSress: LocalHost github.repository}} github_token: $ {{Secrets.github_token}} Digite o modo de saída da tela cheia de tela cheia Modo 🤖 Etapa 3: Execute a revisão da IA depois de receber os quatro arquivos de teclas, você os passa no sistema de configuração da AI. Salve a entrada em um arquivo: – Nome: Salvar dados SQL para executar o arquivo: | gato< EOF > Análise_Input.json {“SQL_QUERIES”: $ {{TOJSON (STEPS.GET-SQL-DATA.OUTPUTPUTS.SQL-QUERIES)}}, “Queries_diff”: $ {{Tojson (Steps.get-sql-data.outputs.Queries-diff)}}, scr. tojson (steps.get-sql-data.outputs.schema)}}, “schema_diff”: $ {{Tojson (steps.get-sql-data.outputputs.SCHEMA-DIFF)}}} eof Enter FullScreen Mode de tela fullcreen Run the DB Analysis Tool: Nome Mensagem: “Analisando as alterações do banco de dados …” Input_file: Analysis_input.json OpenI_API_KEY: $ {{Secrets.openai_api_key}} LaunchDarkly_sdk_key: $ {{Secrets.Lunchly_SDK_KEY}} pull_request_number: $ {{github.event.pull_request.number}} Digite o modo de saída da tela fullcreen Full -Screen sob o capô, aqui está o código: def get_ai_config (carga pago: dict) -> tuple[AIConfig, LDAIConfigTracker]:: aiclient = deps (). get_launchdarkly_ai () context = context.builder (‘cockroachdb’). Kind (‘banco de dados’). name (‘cockroachdb’). built () fallback_value = aiconfig (enabled = model = modelconfig (name = “gpt-4[LDMessage(role=”system”, content=””)]provider = providerConfig (name = “my-default-provider”),) return aiclient.config (‘avaliar database-troca’, contexto, Fallback_value, {‘schema’: Payload.get (‘schema’, []), ‘schema_diff’: payload.get (‘schema_diff’, []), ‘sql_queries’: payload.get (‘sql_queries’, []), ‘Queries_diff’: payload.get (‘Queries_diff’, [])}) Digite o modo de saída da tela cheia da tela cheia e para obter a recomendação da IA: def get_ai_recommendation (carga pay: dict) -> str: config, rastrear = get_ai_config (carga paga) Mensagens = [] Se config.messages não for mais config.messages Response = rastrear.track_openai_metrics (lambda: client.chat.completions.create (model = config.model.name, mensagens =[message.to_dict() for message in messages],)) Deps ().[0].Message.Content Entre no modo de tela de tela cheia Modo de tela cheia 🧠 Etapa 4: Adicione o contexto que você sabe que, uma vez que o modelo tenha suas consultas e esquema, você pode torná-lo mais inteligente, adicionando o contexto de negócios: mecanismo de banco de dados e versão 🧱 Tabelas críticas para pisar cuidadosamente em torno de um volume de consulta média e especificações do servidor 📈 Modeling de dados de equipes-spid. Revisor em um consultor de risco personalizado para o seu sistema. 🚀 Por que isso é importante com as configurações de IA, você pode: capturar problemas de desempenho e escala antes que eles atinjam a produção de compartilhe a Intuição em toda a sua equipe de engenharia, reduz os loops de feedback sem bloquear a implanta experiência em banco de dados sem gargalos, você não está mais à misericórdia de “quem revisou o PR”. Toda mudança recebe uma revisão consistente e com reconhecimento de contexto. 🏁 As mudanças no banco de dados de pensamentos finais não precisam mais ser assustadoras. Ao conectar-se às configurações de AI do LaunchDarkly, você pode automatizar análises, aplicar as melhores práticas de modelagem de dados e desdobrar suas implantas-sem diminuir a velocidade de alguém. Para começar, inscreva -se para uma avaliação gratuita hoje ou envie um email para aiproduct@launchdarkly.com se tiver dúvidas. Então, sim, vá em frente. Vibe. Navio com confiança. E deixe a IA lidar com as coisas difíceis. Originalmente publicado por Kevin Kruger no blog LaunchDarkly.
Fonte
Publicar comentário