Skip to content

Generate a cube query using Vertex LLM

Max Woolf requested to merge mw/llm-product-analytics-poc into master

What does this MR do and why?

  • Adds a new AI Action :generate_cube_query that takes a question and returns a query that is a valid Cube query using Cube query format.

Things this MR is missing

  • Specs
  • Battle-testing the LLM prompt
  • Authorization, currently anybody can use it.
  • Prompt injection protection against access to other projects' data
  • ...probably other things

Screenshots or screen recordings

Screenshots are required for UI changes, and strongly recommended for all other merge requests.

Before After

How to set up and validate locally

  • Check out branch
  • Enable AI features locally: https://docs.gitlab.com/ee/development/ai_features/#test-ai-features-locally (You might be able to skip the embedding database, I'm not sure)
  • Make sure you've enabled Vertex access and configured it with your GDK. This action does not use Anthropic's API, only Vertex.
  • Enable the :expanded_ai_logging feature flag locally.
  • Enable the :generate_cube_query flag locally. NEW
  • Update the code here from perform_async to perform_inline. (This just makes testing easier, don't commit it anywhere.)
  • In another terminal, tail the LLM logs in your GDK: tail -f log/llm.log
  • Make a GraphQL call like this - feel free to update the question parameter:
mutation {
  aiAction(input: {generateCubeQuery: {question: "How many unique users used the application this week?", resourceId: "gid://gitlab/Project/19"}, clientSubscriptionId: "ARandomID"}) {
    clientMutationId
    errors 
  }
}
  • Assuming everything was set up correctly, you should (after a second or two), see a response from Vertex with a cube query 👇 This will also be send to any open GraphQL subscriptions, but looking at the logs is a quicker way to see that it's worked.

Screenshot_2023-12-18_at_16.30.21

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Max Woolf

Merge request reports

Loading