Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Azure模型无法连接,当前已经配置了azure的OPENAI_API_KEY,请详细说一下Azure的怎么配置 #221

Closed
kakaluote0098 opened this issue Dec 27, 2024 · 25 comments

Comments

@kakaluote0098
Copy link

kakaluote0098 commented Dec 27, 2024

疑问:

官方文档中使用 Azure OpenAI 服务时的配置:
export MIDSCENE_USE_AZURE_OPENAI=1
export MIDSCENE_AZURE_OPENAI_SCOPE="https://cognitiveservices.azure.com/.default"
export MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON='{"apiVersion": "2024-11-01-preview", "endpoint": "...", "deployment": "..."}'

其中MIDSCENE_USE_AZURE_OPENAI和MIDSCENE_USE_AZURE_OPENAI怎么配置? 每个公司访问的Azure接口不一样,MIDSCENE_AZURE_OPENAI_SCOPE是否需要改变?

使用的connectivity-test做的测试,当前测试文件采用的是openai的,不是Azure的 ,能否提供一个Azure的demo?

配置如下:OPENAI_API_KEY=xxxxxxxxxxx xxxxxxxxxxx 为Azure的key

报错信息如下:FAIL tests/connectivity.test.ts > Use OpenAI SDK directly > image input with gpt-4o
Error: 401 Incorrect API key provided: xxxxxxxxxxx. You can find your API key at https://platform.openai.com/account/api-keys.
❯ Function.generate node_modules/openai/src/error.ts:74:14
❯ OpenAI.makeStatusError node_modules/openai/src/core.ts:397:21
❯ OpenAI.makeRequest node_modules/openai/src/core.ts:460:24
❯ tests/connectivity.test.ts:48:22
46| });
47|
48| const response = await openai.chat.completions.create({
| ^
49| model: model,
50| messages: [

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/3]⎯
72| const result = await callToGetJSONObject(
| ^
73| [
74| {

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/3]⎯

Test Files 1 failed (1)
Tests 3 failed (3)
Start at 17:30:16

@yuyutaotao
Copy link
Collaborator

正常情况下,你们是怎么使用 OpenAI SDK 的? 有配置参考么?

@yuyutaotao
Copy link
Collaborator

MIDSCENE_USE_AZURE_OPENAI=1

这个配置的时候,对应的调用代码是这个: https://github.com/web-infra-dev/midscene/blob/main/packages/midscene/src/ai-model/openai/index.ts#L77

所以想看下正常使用时是怎么配置的,怎么对应到 Midscene 里来

@yuyutaotao
Copy link
Collaborator

yuyutaotao commented Dec 27, 2024

@kakaluote0098 一些更新:

  1. connectivity test 仓库新增了一个纯连接 Azure 的用例,把第 103 行的 .skip 改成 .only 并运行,就能单独跑它了: https://github.com/web-infra-dev/midscene-example/blob/main/connectivity-test/tests/connectivity.test.ts#L103

  2. 我手边没有 Azure 测试环境,根据文档读了一下,配置大概是这样的,供参考:


使用 Azure OpenAI 服务时的配置

Azure 一般会提供给你 endpoint (AZURE_OPENAI_ENDPOINT), deployment (AZURE_OPENAI_DEPLOYMENT_NAME) , apiVersion 这些参数,你需要将它们合并配置在 MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON 中,拼接为合法的 JSON 字符串。

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

# Azure OpenAI 的 scope
export MIDSCENE_AZURE_OPENAI_SCOPE="https://cognitiveservices.azure.com/.default"

# 把 JSON 中的参数替换为你的参数
export MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON='{"apiVersion": "2024-11-01-preview", "endpoint": "<此处替换为 AZURE_OPENAI_ENDPOINT>", "deployment": "<此处替换为 AZURE_OPENAI_DEPLOYMENT_NAME>"}'

@kakaluote0098
Copy link
Author

@kakaluote0098 一些更新:

  1. connectivity test 仓库新增了一个纯连接 Azure 的用例,把第 103 行的 .skip 改成 .only 并运行,就能单独跑它了: https://github.com/web-infra-dev/midscene-example/blob/main/connectivity-test/tests/connectivity.test.ts#L103
  2. 我手边没有 Azure 测试环境,根据文档读了一下,配置大概是这样的,供参考:

使用 Azure OpenAI 服务时的配置

Azure 一般会提供给你 endpoint (AZURE_OPENAI_ENDPOINT), deployment (AZURE_OPENAI_DEPLOYMENT_NAME) , apiVersion 这些参数,你需要将它们合并配置在 MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON 中,拼接为合法的 JSON 字符串。

使用 Azure OpenAI 服务时,配置为 1

export MIDSCENE_USE_AZURE_OPENAI=1

Azure OpenAI 的 scope

export MIDSCENE_AZURE_OPENAI_SCOPE="https://cognitiveservices.azure.com/.default"

把 JSON 中的参数替换为你的参数

export MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON='{"apiVersion": "2024-11-01-preview", "endpoint": "<此处替换为 AZURE_OPENAI_ENDPOINT>", "deployment": "<此处替换为 AZURE_OPENAI_DEPLOYMENT_NAME>"}'

@kakaluote0098
Copy link
Author

因为我们有了Azure的上层封装,通过http请求就可以访问,这种怎么集成到mitscene里面? 不需要其他配置了,这种情况怎么使用mitscene?

@yuyutaotao
Copy link
Collaborator

你这个 “通过http请求就可以访问” 用的是什么接口形式呢?兼容 OpenAI 的话,直接用文档里 OpenAI 对应的配置项就行了

@xianping-yan
Copy link

curl -X POST "${endpoint}/openai/deployments/${deployment_name}/chat/completions?api-version=${api_version}" \
2  -H "Content-Type: application/json" \
3  -H "api-key: ${api_key}" \
4  -d "{
5  \"messages\": [{\"role\":\"system\",\"content\":\"You are an AI assistant that helps people find information.\"}],
6  \"max_tokens\": 800,
7  \"temperature\": 0.7,
8  \"frequency_penalty\": 0,
9  \"presence_penalty\": 0,
10  \"top_p\": 0.95,
11  \"stop\": null
12}"

比如我们使用的是REST API调用,在请求头中传入 api-key,这种如何接入

@xianping-yan
Copy link

curl -X POST "${endpoint}/openai/deployments/${deployment_name}/chat/completions?api-version=${api_version}" \
2  -H "Content-Type: application/json" \
3  -H "api-key: ${api_key}" \
4  -d "{
5  \"messages\": [{\"role\":\"system\",\"content\":\"You are an AI assistant that helps people find information.\"}],
6  \"max_tokens\": 800,
7  \"temperature\": 0.7,
8  \"frequency_penalty\": 0,
9  \"presence_penalty\": 0,
10  \"top_p\": 0.95,
11  \"stop\": null
12}"

比如我们使用的是REST API调用,在请求头中传入 api-key,这种如何接入

@yuyutaotao 期待回复

@yuyutaotao
Copy link
Collaborator

这个 api_version 有点难搞啊。能让它出现在 header 里么?还是一定要在 url query 里?

这个接口是哪里封装的?公司内部私有实现 or 业界公开的 SDK?

@xianping-yan
Copy link

xianping-yan commented Dec 31, 2024

@yuyutaotao
Copy link
Collaborator

@xianping-yan 懂了,期望用 API 秘钥接入,但现在只给了 azureADTokenProvider

我们来搞一下

@xianping-yan
Copy link

xianping-yan commented Dec 31, 2024

@yuyutaotao 感谢感谢,快快滴

@yuyutaotao
Copy link
Collaborator

发布在 beta tag 版本上了,可以试一下(具体版本号是 0.8.14-beta-20241231023737.0)

文档先在这个 PR 里看吧:https://github.com/web-infra-dev/midscene/pull/227/files

核心配置就是这里几项:

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_NAME="gpt-4o"

@xianping-yan
Copy link

好的谢谢

@yuyutaotao
Copy link
Collaborator

测试通过了之后这里回复一下,我们好合并代码

@xianping-yan
Copy link

问题1:

Error: The apiKey and azureADTokenProvider arguments are mutually exclusive; only one can be passed at a time.

虽然是azureADTokenProvider没传,但是不能同时给到AzureOpenAI()

Image

问题2:

我注释到上面的azureADTokenProvider连接时OK的,但是执行后报下面的错误
Image
但是我通过REST的方式直接调用是OK的,也就是我的endpoint, apiKey, apiVersion, deployment都是没有问题的,也支持视觉。
这个我还没有查到为什么?

@yuyutaotao
Copy link
Collaborator

deployment 看起来是我传错变量了,我改下

@yuyutaotao
Copy link
Collaborator

beta tag 版本更新了(0.8.14-beta-20241231035725.0),麻烦再升级试一下。AZURE_OPENAI_DEPLOYMENT_NAME 变量名改了,现在是 AZURE_OPENAI_DEPLOYMENT

@xianping-yan
Copy link

Image

报的错不一样了,我直接用微软的例子就可以

Image

@yuyutaotao
Copy link
Collaborator

MIDSCENE_AZURE_OPENAI_SCOPE 这个参数不要配,确定删掉了吗?

@xianping-yan
Copy link

是的,没有这个参数

@yuyutaotao
Copy link
Collaborator

@xianping-yan 你好,麻烦再更新个 beta ( 0.8.14-beta-20241231075856.0 ) 试试。

应该是之前 SCOPE 有个默认值导致的,我刚修了又推了一版。

@xianping-yan
Copy link

@yuyutaotao ok了

@yuyutaotao
Copy link
Collaborator

赞 晚些我们合并发布掉

@yuyutaotao
Copy link
Collaborator

已经发布在了最新版上

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants