Code Review Agent 配置

介绍如何在 Azure DevOps 环境中配置和使用 Code Review Agent 代码评审智能体。包括了了从部署智能体、配置大模型、设置模型访问参数、添加 Azure DevOps Webhook、启用智能体以及测试验证的完整流程。

AI Models 大模型支持

Code Review Agent 支持 OpenAI (或者是Azure Open AI) 和其他主流大模型(比如DeepSeek),需要提前准备好模型。

Azure DevOps 配置

目前 Code Review Agent 代码评审智能体 已支持 Azure DevOps Servies和Azure DevOps Server的集成。 在使用前需要先配置好webhook, 目前使用到了两个webhook,一个是创建PR事件和提交PR Comment事件。

另外还需配置启用的 Azure DevOps 机构。

Code Review Agent 代码评审智能体 配置流程

1. 首先部署Code Review Agent 代码评审智能体,获取Code Review Agent 代码评审智能体的API访问地址

2. 配置大模型

默认模型为 gpt-3.5-turbo-16k,常用的模型还包括:gpt-4odeepseek/deepseek-chat ,如果需要使用其他模型,请联系部署实施人员来修改。

# pr_agent\settings\configuration.toml 
[config]
model="gpt-3.5-turbo-16k"
model_turbo="gpt-3.5-turbo-16k"
fallback_models=["gpt-3.5-turbo-16k"]

3. 配置模型访问参数

以下是Azure OpenAI 的配置示例:

# pr_agent/settings/.secrets.toml
[openai]
key = "<OpenAI API key>"
api_type = "azure" # for  Azure OpenAI
api_version = '2023-03-15-preview'  # Check Azure documentation for the current API version
api_base = "<endpoint url>"  # The base URL for your Azure OpenAI resource. e.g. "https://<your resource name>.openai.azure.com"
deployment_id = "<your deployment_id>"  # The deployment name you chose when you deployed the engine

以下是 deepseek 的配置示例:

# pr_agent/settings/.secrets.toml
[openai]
key = "<model key>" 
api_base = "<model api endpoint>"  #ex: https://api.deepseek.com/

4. 为 Azure DevOps 启用Code Review Agent 代码评审智能体

4.1 配置azure devops 访问token

需要配置一个Azure DevOps 机构或集合,和用于agent调用azure devops api的 访问token(pat)。

Azure DevOps 支持 PAT 令牌或 DefaultAzureCredential(azure devops services) 认证。PAT 创建速度更快,但有内置的到期日期,并且会使用用户身份进行 API 调用。使用 efaultAzureCredential,您可以使用托管身份或服务主体,这更安全,并且会为代理创建单独的 ADO 用户身份(通过 AAD)。

如果选择了 PAT,您可以在 .secrets.toml 中分配该值。如果选择了 DefaultAzureCredential,您可以直接分配 AZURE_CLIENT_SECRET 等额外的环境变量,或者使用托管身份/az cli(用于本地开发)而无需任何额外配置。无论哪种情况,都必须在 .secrets.toml 中分配 ‘org’ 值:

[azure_devops]
# in # pr_agent/settings/.secrets.toml 中
# For Azure devops personal access token
org = "<azure devops org or collection>" # ex: https://dev.azure.com/<your org name>
pat = "<pat>" # a azure devops access pat token

4.2 为需要启用Code Review Agent的项目 添加 Azure DevOps Webhook

要从 Azure DevOps Webhook 触发,您需要手动添加两个 Webhook,如果有多个项目需要启用,则每个项目都需要配置一次。

一个是 “Pull request created”类型的触发器,

一个是“Pull request commented on”类型的触发器,格式为 / 评论在相关的 PR 上。请注意,对于“Pull request commented on”触发器,仅支持 API v2.0。

url 则填写第一步获取的 Code Review Agent 代码评审智能体的API访问地址。

为了确保 webhook 的安全性,请创建一个临时的用户名/密码对,并在服务器和 Azure DevOps webhook 上配置 Webhook 用户名和密码。这些将作为基本身份验证数据随每个请求一起发送:

## in # pr_agent/settings/.secrets.toml 中
[azure_devops_server]
webhook_username = "<basic auth user>" #default value is aisedevpr
webhook_password = "<basic auth password>" #default password is <TO BE Fill>

确保 webhook 端点仅通过 HTTPS 访问,以降低使用基本身份验证时凭据被拦截的风险。

webhook_username和webhook_password 在发布时已经设置默认值,如果有需要表按需修改

关于认证方式的说明

Code Review Agent提供和api支持基本认证和匿名访问(不需要认证)两种模式,前者适用于外网环境,后者适用于内网环境。如果想采用匿名方式(无认证),只里面要把

整个节点注释(或者删除)即可.

## in # pr_agent/settings/.secrets.toml 中
# [azure_devops_server]
# webhook_username = "<basic auth user>" #default value is aisedevpr
# webhook_password = "<basic auth password>" #default password is <TO BE Fill>

另外azure devops 的webhook配置那里帐号和密码留空即可,修改完后需要重启Code Review Agent 服务才能生效。

4.3 配置自动执的行命令(可选)

在Pull Request 创建时,默认会自动执行 /describe ,除此之外还可以添加其他自动执行的命令,要控制在创建新的PR时自动运行的命令,您可以在配置文件中设置pr_commands参数:

#  pr_agent\settings\configuration.toml 
[azure_devops_server]
pr_commands = [
    "/describe", ## 默认自动触发
    "/review --pr_reviewer.num_code_suggestions=0", # num_code_suggestions=0 表示不生成代码改进建议 ## 默认不包含
    "/improve", ## 默认不包含
]

5. 为 GitLab 启用 Code Review Agent 代码评审智能体

GitLab支持正在适配中,末未正式支持后我们会补充这部分的文档。

6. 其他配置

忽略某些文件或目录

在某些情况下,您可能希望从Code Review Agent 执行的分析中排除特定的文件或目录。这在您有自动生成的文件或不应该进行审查的文件(如供应商代码)时非常有用。

要忽略文件或目录,请编辑ignore.toml配置文件。此设置还公开了以下环境变量:IGNORE.GLOB、IGNORE.REGEX。例如,要在具有在线使用情况的PR中忽略Python文件,请在PR上发表评论:

/review --ignore.glob=['*.py']

要在所有PR中忽略Python文件,请在配置文件中设置。

Code Review Agent 在默认配置忽略以下文件和目录:

[ignore]

glob = [
    # Ignore files and directories matching these glob patterns.
    # See https://docs.python.org/3/library/glob.html   
    'vendor/**',
    '**/testdata/**',  # core /deploy/1.mysql/sqls/sprint36/testdata
    '*.xlsx',
    '*.pdf',
    '*.word'
    #*.py
]
regex = [
    # Ignore files and directories matching these regex patterns.
    # See https://learnbyexample.github.io/python-regex-cheatsheet/
]

其他的配置请参考 高级配置

7. 配置完成,重启服务以使配置生效,测试和验证

打开一个现有的Pull Reqest,使用 /update_changelog 来快速测试.

其他 Git 工具的集成

在Code Review Agent 中我们根据Provider模式设计了GIT provider,默认为 azure,即默认支持 Azure DevOps Services/Azure DevOps Server GitRepos的集成。,其他的Git工具,比如 GitLab、BitBucket 和 GitHub Enterprise 等其他Git工具的集成正在开发中,敬请期待。