Initialize the openAI REST experimentation endoint
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
- In rails console enable the experiment fully
Feature.enable(:openai_experimentation)
- 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>"
Gitlab::CurrentSettings.update(openai_api_key: "<openai-api-token>")
- Visit
/api/v4/ai/experimentation/openai/embeddings
and/api/v4/ai/experimentation/openai/completions
Database Migration output
(
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.
-
I have evaluated the MR acceptance checklist for this MR.
related to https://gitlab.com/gitlab-org/gitlab/-/issues/403609+