Skip to content

Initialize the openAI REST experimentation endoint

Alexandru Croitor requested to merge 403609_ai_experimentation_api into master

What does this MR do and why?

Adds two experimental endpoints for GitLab team members (behind feature flag) to experiment with OpenAI api.

Screenshots or screen recordings

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

How to set up and validate locally

  1. In rails console enable the experiment fully
    Feature.enable(:openai_experimentation)
  2. Add OpenAI token using settings api endpoint.
      curl --request PUT --header "Authorization: Bearer <gitlab-api-token>" "http://127.0.0.1:3001/api/v4/application/settings?openai_api_key=<openai-api-token>"
    Or from rails console you can do:
      Gitlab::CurrentSettings.update(openai_api_key: "<openai-api-token>")
  3. Visit /api/v4/ai/experimentation/openai/embeddings and /api/v4/ai/experimentation/openai/completions

Database Migration output

(🎩 @l.rosa)

Up
main: == 20230331142006 AddOpenAiApiKeyApplicationSetting: migrating ================
main: -- add_column(:application_settings, :encrypted_openai_api_key, :binary)
main:    -> 0.0025s
main: -- add_column(:application_settings, :encrypted_openai_api_key_iv, :binary)
main:    -> 0.0008s
main: == 20230331142006 AddOpenAiApiKeyApplicationSetting: migrated (0.0110s) =======

ci: == 20230331142006 AddOpenAiApiKeyApplicationSetting: migrating ================
ci: -- add_column(:application_settings, :encrypted_openai_api_key, :binary)
ci:    -> 0.0016s
ci: -- add_column(:application_settings, :encrypted_openai_api_key_iv, :binary)
ci:    -> 0.0006s
ci: == 20230331142006 AddOpenAiApiKeyApplicationSetting: migrated (0.0119s) =======
Down
main: == 20230331142006 AddOpenAiApiKeyApplicationSetting: reverting ================
main: -- remove_column(:application_settings, :encrypted_openai_api_key_iv, :binary)
main:    -> 0.0022s
main: -- remove_column(:application_settings, :encrypted_openai_api_key, :binary)
main:    -> 0.0016s
main: == 20230331142006 AddOpenAiApiKeyApplicationSetting: reverted (0.0096s) =======

ci: == 20230331142006 AddOpenAiApiKeyApplicationSetting: reverting ================
ci: -- remove_column(:application_settings, :encrypted_openai_api_key_iv, :binary)
ci:    -> 0.0029s
ci: -- remove_column(:application_settings, :encrypted_openai_api_key, :binary)
ci:    -> 0.0006s
ci: == 20230331142006 AddOpenAiApiKeyApplicationSetting: reverted (0.0243s) =======

MR acceptance checklist

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

related to https://gitlab.com/gitlab-org/gitlab/-/issues/403609+

Edited by Drew Blessing

Merge request reports