Ops Showcase Presentation: Conversational Interface to build gitlab-ci.yml
✨ Summary of the issue
This is a showcase of the AI feature sectionops is working on implementing right now.
General idea
We want to provide a conversational interface that would allow users to create .gitlab-ci.yaml
files easier. Configuring the deployment is not easy and requires knowledge of both gitlab-ci yaml features and details about the project that needs to be built, tested and deployed. The chat interface should lower the entry barrier for people to start deploying their applications.
Implementation details
Client UI
For the client implementation we've decided to adopt the chat interface that is used in other parts of GitLab, namely in https://gitlab.com/gitlab-org/gitlab/-/issues/407567+ . As the UI component is going through the active development phase, we've decided to fork it and fine-tune to our needs, while in parallel contributing to the original component with the intention to switch to it once it can provide all the features we need.
Client data retrieval
The conversation data is retrieved from the backend by GraphQL. To keep things simple for the MVC and given that the conversation is happening only between a single user and a chat assistant, we use a simple polling mechanism to retrieve chat assistant answers. We only poll data when there is an unanswered user message, we don't poll otherwise to save the bandwidth and decrease the server load.
The conversation data is stored on the backend, that enables us to maintain the chat history if a user closes the browser session, or switches devices, etc.
Collecting usage data
As the conversation is stored on the server, we can have a very detailed overview on how the chat bot is used. The users can also provide a feedback by using the common feedback component and rate assistant's answers as "helpful", "unhelpful" or "wrong". Using this data we can improve and fine-tune the chat experience.
🔑 Relevant Details
- Implementation issue: https://gitlab.com/gitlab-org/gitlab/-/issues/407739+
- Video link: https://www.loom.com/share/0a2736061a04465cad137d37adae109b
❓ Questions
NOTE: Using the format noted below, each question should be threaded. Answers can be placed as subpoints under each threaded question, tagging the original team member who asked the question
{Insert Question} - {tag presenter username}