配置模型和服务商

Midscene 默认集成了 OpenAI SDK 调用 AI 服务。使用这个 SDK 限定了 AI 服务出入参的形式,但并不意味着你只能使用 OpenAI 的模型,你可以使用任何兼容此类接口的模型服务(绝大多数平台或工具都支持)。

在本文中,我们将展示如何配置 AI 提供商,以及如何选择不同的模型。你可以先阅读 选择 AI 模型 来了解如何选择模型。

选择 AI 模型

配置

通用配置

你可以通过环境变量来自定义配置。这些配置同样可以在 Chrome 插件 中使用。

常用的主要配置项如下,其中 OPENAI_API_KEY 是必选项:

名称描述
OPENAI_API_KEY必选项。你的 OpenAI API Key (如 "sk-abcdefghijklmnopqrstuvwxyz")
OPENAI_BASE_URL可选。API 的接入 URL。常用于切换到其他模型服务,如 https://some_service_name.com/v1
MIDSCENE_MODEL_NAME可选。指定一个不同的模型名称 (默认是 gpt-4o)。常用于切换到其他模型服务

使用 Qwen 2.5 VL 模型的额外配置:

名称描述
MIDSCENE_USE_QWEN_VL设置为 "1" 以适配 Qwen 2.5 VL 模型

使用 UI-TARS 模型的额外配置:

名称描述
MIDSCENE_USE_VLM_UI_TARS指定 UI-TARS 版本,支持的值为 1.0 1.5 DOUBAO(火山引擎版本)

使用 Gemini 2.5 Pro 模型的额外配置:

名称描述
MIDSCENE_USE_GEMINI设置为 "1" 以适配 Gemini 2.5 Pro 模型

关于模型的更多信息,请参阅 选择 AI 模型

高级配置

还有一些高级配置项,通常不需要使用。

名称描述
OPENAI_USE_AZURE可选。设置为 "true" 以使用 Azure OpenAI Service。更多详情请参阅后文
MIDSCENE_OPENAI_INIT_CONFIG_JSON可选。OpenAI SDK 的初始化配置 JSON
MIDSCENE_OPENAI_HTTP_PROXY可选。HTTP/HTTPS 代理配置 (如 "http://127.0.0.1:8080" 或 "https://proxy.example.com:8080")。这个选项优先级高于 MIDSCENE_OPENAI_SOCKS_PROXY
MIDSCENE_OPENAI_SOCKS_PROXY可选。SOCKS 代理配置 (如 "socks5://127.0.0.1:1080")
MIDSCENE_PREFERRED_LANGUAGE可选。模型响应的语言。如果当前时区是 GMT+8 则默认是 Chinese,否则是 English
OPENAI_MAX_TOKENS可选。模型响应的 max_tokens 数

调试配置

通过设置以下配置,可以打印更多日志用于调试。这些日志也会打印到 ./midscene_run/log 文件夹中。

名称描述
DEBUG=midscene:ai:profile:stats可选。设置此项,可以打印 AI 服务消耗的时间、token 使用情况,用逗号分隔,便于分析
DEBUG=midscene:ai:profile:detail可选。设置此项,可以打印 AI token 消耗信息的详情
DEBUG=midscene:ai:call可选。设置此项,可以打印 AI 响应详情
DEBUG=midscene:android:adb可选。设置此项,可以打印 Android adb 命令调用详情

两种配置环境变量的方式

选择其中一种方式来配置环境变量。

方法一:在系统中设置环境变量

# 替换为你自己的 API Key
export OPENAI_API_KEY="sk-abcdefghijklmnopqrstuvwxyz"

方法二:使用 dotenv 配置环境变量

我们的 demo 项目 使用了这种方式。

Dotenv 是一个零依赖的 npm 包,用于将环境变量从 .env 文件加载到环境变量 process.env 中。

# 安装 dotenv
npm install dotenv --save

在项目根目录下创建一个 .env 文件,并添加以下内容。注意,这里不需要在每一行前添加 export

OPENAI_API_KEY="sk-abcdefghijklmnopqrstuvwxyz"

在脚本中导入 dotenv 模块,导入后它会自动读取 .env 文件中的环境变量。

import 'dotenv/config';

使用 Azure OpenAI 服务时的配置

使用 ADT token provider

此种模式无法运行在浏览器插件中。

# 使用 Azure OpenAI 服务时,配置为 1
export MIDSCENE_USE_AZURE_OPENAI=1

export MIDSCENE_AZURE_OPENAI_SCOPE="https://cognitiveservices.azure.com/.default"
export AZURE_OPENAI_ENDPOINT="..."
export AZURE_OPENAI_API_VERSION="2024-05-01-preview"
export AZURE_OPENAI_DEPLOYMENT="gpt-4o"

使用 keyless 模式

export MIDSCENE_USE_AZURE_OPENAI=1
export AZURE_OPENAI_ENDPOINT="..."
export AZURE_OPENAI_KEY="..."
export AZURE_OPENAI_API_VERSION="2024-05-01-preview"
export AZURE_OPENAI_DEPLOYMENT="gpt-4o"

使用 Javascript 配置 AI 服务

你也可以在运行 Midscene 代码之前,使用 Javascript 来配置 AI 服务。

import { overrideAIConfig } from "@midscene/web/puppeteer";
// 或者 import { overrideAIConfig } from "@midscene/web/playwright";
// 或者 import { overrideAIConfig } from "@midscene/android";


overrideAIConfig({
  MIDSCENE_MODEL_NAME: "...",
  // ...
});

示例:使用 OpenAI 的gpt-4o 模型

配置环境变量:

export OPENAI_API_KEY="sk-..."
export OPENAI_BASE_URL="https://endpoint.some_other_provider.com/v1" # 可选,如果你想要使用一个不同于 OpenAI 官方的接入点
export MIDSCENE_MODEL_NAME="gpt-4o-2024-11-20" # 可选,默认是 "gpt-4o"

示例:使用阿里云官方的qwen-vl-max-latest 模型

配置环境变量:

export OPENAI_API_KEY="sk-..."
export OPENAI_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
export MIDSCENE_MODEL_NAME="qwen-vl-max-latest"
export MIDSCENE_USE_QWEN_VL=1

示例:使用 Doubao-1.5-thinking-vision-pro 模型

配置环境变量:

export OPENAI_BASE_URL="https://ark-cn-beijing.bytedance.net/api/v3"
export OPENAI_API_KEY="..."
export MIDSCENE_MODEL_NAME='ep-...'
export MIDSCENE_USE_DOUBAO_VISION=1

示例:使用 UI-TARS 模型

配置环境变量:

export OPENAI_BASE_URL="http://localhost:1234/v1"
export MIDSCENE_MODEL_NAME="ui-tars-72b-sft"
export MIDSCENE_USE_VLM_UI_TARS=1

示例:使用 Anthropic 的claude-3-opus-20240229 模型

当配置 MIDSCENE_USE_ANTHROPIC_SDK=1 时,Midscene 会使用 Anthropic SDK (@anthropic-ai/sdk) 来调用模型。

配置环境变量:

export MIDSCENE_USE_ANTHROPIC_SDK=1
export ANTHROPIC_API_KEY="....."
export MIDSCENE_MODEL_NAME="claude-3-opus-20240229"

调试 LLM 服务连接问题

如果你想要调试 LLM 服务连接问题,可以使用示例项目中的 connectivity-test 目录:https://github.com/web-infra-dev/midscene-example/tree/main/connectivity-test

将你的 .env 文件放在 connectivity-test 文件夹中,然后运行 npm i && npm run test 来查看问题。