Setup Guide for another AI Provider
This page describes how to configure a generic AI Provider for use with the AI Review Assistant.
If any of the headers, body content or query parameters require a secret, use the $API_KEY
placeholder, and fill the actual value in the API Key section.
As Repository Admin:
go the Code Review Assistant repository settings page.
open the AI Review Assistant tab on top.
Request section
Section | Instructions |
---|---|
API URL | Enter the REST API address for your AI Provider. This has to be the endpoint for a chat (message based) completion |
API Key | Enter your API key |
Headers | Add all the key-value Http Headers for your AI Provider. For example, a Basic Authorization or a version controlling header. |
Query Parameters | Add all key-value pairs that you would find after the |
Request Body | Add all members for the JSON content. For example, the model, a stop sequence, a maximum number of tokens⦠|
Response Section
Section | Instructions |
---|---|
Success Query | Enter the JSON query to retrieve the content of the chat message completion. For example, if the JSON response from the API is
JSON
Then the query will be |
Error Query | Enter the query to retrieve the error message when an error occurs. This is not strictly necessary, but it will help users when an error pops up. |
Test and Save
Click on Test and verify that you receive a confirmation message that everything is configured properly.
Click on Save.
If you have trouble in configuring our AI Review Assistant, we are happy to help! π
More on JSON Query Language (JQL)
AI Review Assistant uses a custom JSON Query Language (JQL) to extract text information from JSON formatted responses.
A JQL query is a text snippet, describing a path from the root of a JSON document to a single text field.
Format
A JQL query is made of selections joined with a period (.
). For example a.b.c
is a path made of three selections (a
, b
, and c
). Selections are evaluated from left to right, and each describes how to extract a nested value from a JSON document. For a JQL query to be valid, the final selection must extract a String value.
Each selection can be one of two kinds, a field selection or an array selection.
Field Selection
A field selection extracts a field of a JSON object. For example message
requires the current JSON object to have a field message
(e.g. {"message":<value>}
) and extracts the associated value.
Array Selection
An array selection combines field selection with indexing. For example content[0]
requires the current JSON object to have a field content
associated with an array, (e.g. {"content":[<values>...]}
) and tries to extract the element of the array at index 0
.
Example
Assume the AI provider returns the following JSON document (this example comes from Claude.ai):
{
"content": [
{
"text": "Hi! My name is Claude.",
"type": "text"
}
],
"id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
"model": "claude-3-5-sonnet-20241022",
"role": "assistant",
"stop_reason": "end_turn",
"stop_sequence": null,
"type": "message",
"usage": {
"input_tokens": 2095,
"output_tokens": 503
}
}
To extract the useful response message, i.e. "Hi! My name is Claude."
- you would use the JQL query content[0].text
. First from the root of the document it selects the value of the "content"
field (an array) and selects the object at index 0
; next from that object it selects the "text"
field, resulting in the string we needed.
Similarly, to extract the model used - you would use the JQL query model
. From the root of the JSON document it selects the value of the "model"
field and extracts the text, i.e. "claude-3-5-sonnet-20241022"
.