Gestione dei prompt file a livello di organizzazione aziendale in GitHub

di Matteo Tumiati, in DevOps,

Come abbiamo già evidenziato in passato, gli LLM fanno ormai parte della quotidianità di ciascuno di noi. Quando però si parla di organizzazioni aziendali, si cerca di avere sempre un po' di governance per amministrare al meglio il proliferare di dati o di strumenti che non sono autorizzati e di cui si vuole tenere traccia. Proprio per questo motivo, nasce la possibilità di salvare i prompt direttamente all'interno dei repository di GitHub:

name: Summarize Open Issues
description: |
  Produces a structured summary of all open GitHub issues,
  highlighting themes, priorities, and duplicates.

model: openai/gpt-4o-mini

parameters:
  temperature: 0.2
  max_tokens: 500

messages:
  - role: system
    content: |
      You are a senior technical project manager.
      Be concise, factual, and structured.
      Do not invent issues or details.

  - role: user
    content: |
      The following are open GitHub issues.

      Produce:
      1. A short executive summary (3?5 sentences)
      2. Major themes (bulleted)
      3. High-priority or blocking issues
      4. Potential duplicates or strongly related issues

      Issues:
      {{issues}}

testData:
  - name: Authentication & Stability Issues
    inputs:
      issues: |
        #12 Login fails intermittently
        Users report 401 errors when logging in after long inactivity.

        #18 API crashes under load
        The backend API sometimes crashes when handling high traffic.

        #21 Login error after token refresh
        Login fails after refreshing an expired token.

    expectedOutput:
      contains:
        - authentication
        - login
        - stability
        - api

  - name: UI Bugs
    inputs:
      issues: |
        #30 Button not clickable
        Submit button does not respond on mobile.

        #31 Modal overflow
        Settings modal overflows on small screens.

    expectedOutput:
      contains:
        - ui
        - mobile
        - layout

evaluations:
  - name: Mentions themes
    type: contains
    value:
      - authentication
      - api
      - ui

  - name: Has structured sections
    type: regex
    value: "(Executive Summary|Major Themes|High[- ]Priority)"

  - name: Not excessively verbose
    type: maxLength
    value: 1200

Questo file deve essere necessariamente chiamato *.prompt.yaml, ma può risiedere ovunque all'interno del repository. Non viene usato in modo automatico da GitHub, ma modificandolo avremo a disposizione un editor di GitHub Models per semplificarci la vita.

All'interno di questo file possiamo andare a specificare non solo cosa deve eseguire il prompt, in questo caso un riassunto di tutte le GitHub issue aperte, divise per categoria e priorità, ma anche il modello da utilizzare, limitare il numero di token da utilizzare per la risposta, valutare la temperatura per la casualità e creatività delle risposte.

Oltre a questo, nella seconda metà del file, troviamo dei veri e propri "test case": infatti, è possibile provare a lanciare il modello per generare delle risposte, che saranno basate sui test data forniti nel file stesso, e verificare che l'output sia coerente, tutto all'interno di GitHub. Se, invece, vogliamo automatizzare tutto il processo, possiamo fare uso della CLI ed installarli una extension che processa questi file:

E quindi utilizzarla all'interno di un workflow qualsiasi:

- name: Process issues
  shell: bash
  run: |
    gh models run -f .prompts/summarize-issues.prompt.yml -i issues="$(gh issue list --state open --json title,body | jq -r '.[] | "- " + .title + "\n" + .body')"

L'output può quindi essere salvato all'interno del repository stesso, esternamente o centralmente all'organizzazione aziendale, così come i prompt file possono essere condivisi tra più repository e gestiti direttamente dall'enterprise admin che può bloccare le aggiunte, modifiche o cancellazioni tramite i file di CODEOWNER o policy a livello di organization/enterprise.

Commenti

Visualizza/aggiungi commenti

| Condividi su: LinkedIn, Facebook

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi