songquanpeng / one-api

OpenAI 接口管理 & 分发系统,支持 Azure、Anthropic Claude、Google PaLM 2 & Gemini、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元,可用于二次分发管理 key,仅单可执行文件,已打包好 Docker 镜像,一键部署,开箱即用. OpenAI key management & redistribution system, using a single API for all LLMs, and features an English UI.
https://openai.justsong.cn/
MIT License
17.49k stars 3.98k forks source link

Azure OpenAI API #57

Closed aiastia closed 1 year ago

aiastia commented 1 year ago

想问下有无提上议程

songquanpeng commented 1 year ago

我还没拿到权限,如果能搞清楚请求体和返回体格式,并能协助测试的话,当然可以搞。

和 #48 重复。

utopeadia commented 1 year ago

我还没拿到权限,如果能搞清楚请求体和返回体格式,并能协助测试的话,当然可以搞。

和 #48 重复。

我拥有权限,可以协助进行测试

utopeadia commented 1 year ago
#Note: The openai-python library support for Azure OpenAI is in preview.
import os
import openai
openai.api_type = "azure"
openai.api_base = "个人资源的域名"
openai.api_version = "2023-03-15-preview"
openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.ChatCompletion.create(
  engine="gpt35",# 这里是部署节点名称,为用户自定义的,az openai获取资源包后需要自行部署模型,比如gpt3.5、text之类的,然后给部署的模型起个名字,这里就是自己起的名字
  messages = [{"role":"system","content":"You are an AI assistant that helps people find information."},{"role":"user","content":"你好"},{"role":"assistant","content":"你好!有什么我可以帮您的吗?"},{"role":"user","content":"你叫什么名字"},{"role":"assistant","content":"我是一个AI助手,您可以称呼我为“AI助手”或者“机器人”。"},{"role":"user","content":"你属于哪一家公司"}],
  temperature=0.7,
  max_tokens=800,
  top_p=0.95,
  frequency_penalty=0,
  presence_penalty=0,
  stop=None)
songquanpeng commented 1 year ago

好的,我有以下需要搞清楚的问题:

  1. API 端点是什么?
  2. 请求体的 JSON 格式定义。
  3. 返回体的 JSON 格式定义。
utopeadia commented 1 year ago

好的,我有以下需要搞清楚的问题:

  1. API 端点是什么?
  2. 请求体的 JSON 格式定义。
  3. 返回体的 JSON 格式定义。

ok我来逐个进行回复

utopeadia commented 1 year ago

1、API端点: https://自定义资源名.openai.azure.com/openai/deployments/自定义部署名/chat/completions?api-version=2023-03-15-preview

utopeadia commented 1 year ago

整体结构如下:(curl) curl https://资源名.openai.azure.com/openai/deployments/部署名/chat/completions?api-version=2023-03-15-preview \ -H "Content-Type: application/json" \ -H "api-key: YOUR_API_KEY" \ -d '{ "messages": "[{\"role\":\"system\",\"content\":\"You are an AI assistant that helps people find information.\"},{\"role\":\"user\",\"content\":\"你好\"},{\"role\":\"assistant\",\"content\":\"你好!有什么我可以帮您的吗?\"},{\"role\":\"user\",\"content\":\"你叫什么名字\"},{\"role\":\"assistant\",\"content\":\"我是一个AI助手,您可以称呼我为“AI助手”或者“机器人”。\"},{\"role\":\"user\",\"content\":\"你属于哪一家公司\"},{\"role\":\"assistant\",\"content\":\"我是一个虚拟的AI助手,不属于任何一家具体的公司。我被设计用于帮助人们查找信息和回答问题。\"}]", "max_tokens": 800, "temperature": 0.7, "frequency_penalty": 0, "presence_penalty": 0, "top_p": 0.95, "stop": null }'

utopeadia commented 1 year ago

这是官方的部署文档: https://learn.microsoft.com/en-us/azure/cognitive-services/openai/tutorials/embeddings?tabs=command-line

songquanpeng commented 1 year ago

好的,我现在开始搞。

utopeadia commented 1 year ago

好的,我现在开始搞。

辛苦了

songquanpeng commented 1 year ago

看文档,貌似非 stream 模式下,返回体格式是一致的:

  1. https://platform.openai.com/docs/guides/chat/response-format
  2. https://learn.microsoft.com/en-us/azure/cognitive-services/openai/chatgpt-quickstart?pivots=rest-api&tabs=command-line#output

但是 steam 模式下没明说,我这里姑且认为也是一致的。

songquanpeng commented 1 year ago

这个是可选的吗??api-version=2023-03-15-preview

utopeadia commented 1 year ago

这个是可选的吗??api-version=2023-03-15-preview

稍等我查阅一下

utopeadia commented 1 year ago

我发现文档中好像并没有写明具体的情况,我认为他是可选的,我查阅了其他没有备注版本的模型,他们会把版本标记为2022-12-01 completions?api-version=2022-12-01

songquanpeng commented 1 year ago

可以试一下不填会报错吗?

utopeadia commented 1 year ago

我正在尝试

utopeadia commented 1 year ago

可以试一下不填会报错吗?

证实,是不可缺省的https://zhuanlan.zhihu.com/p/618541541

songquanpeng commented 1 year ago

Okay,目前先硬编码一个默认版本。

songquanpeng commented 1 year ago

已推送版本 v0.2.3-alpha,期待测试反馈。

utopeadia commented 1 year ago

已推送版本 v0.2.3-alpha,期待测试反馈。

目前来看不太行,要不您给我一个邮件地址,我给你一个API密钥便于测试?

songquanpeng commented 1 year ago

好的,i#justsong.cn,# 替换为 @

utopeadia commented 1 year ago

i#justsong.c

已经发送,请查收

songquanpeng commented 1 year ago

i#justsong.cn,暂时还没收到。

songquanpeng commented 1 year ago

已收到。

utopeadia commented 1 year ago

已收到。

ok

songquanpeng commented 1 year ago

我还没试,不过我感觉是你部署名称的问题,需要和 OpenAI 的模型名称保持一致,部署名称可以换成 gpt-3.5-turbo 吗?

utopeadia commented 1 year ago

我还没试,不过我感觉是你部署名称的问题,需要和 OpenAI 的模型名称保持一致,部署名称可以换成 gpt-3.5-turbo 吗?

我试试

utopeadia commented 1 year ago

我还没试,不过我感觉是你部署名称的问题,需要和 OpenAI 的模型名称保持一致,部署名称可以换成 gpt-3.5-turbo 吗? image 我尝试了修改部署名称,但是没有成功,如果加入(version.....)之类的后缀就无法命名了

utopeadia commented 1 year ago
截屏2023-05-13 12 15 20

这是现在的三个模型命名

songquanpeng commented 1 year ago

了解了,我先手动修改名称试一下。

songquanpeng commented 1 year ago

可以了,stream 模式和非 stream 模式都 Okay: image

songquanpeng commented 1 year ago

目前看他只是把点给去掉了,我能看一下完整的模型名称列表吗?

utopeadia commented 1 year ago

目前看他只是把点给去掉了,我能看一下完整的模型名称列表吗?

ok我截个图,GPT4需要单独申请,我还没通过

截屏2023-05-13 12 20 41 截屏2023-05-13 12 20 31
songquanpeng commented 1 year ago

Okay,目前打算自动把用户传入的模型名称中的点剔除掉,这样就能兼容已有的 API 了。

utopeadia commented 1 year ago

Okay,目前打算自动把用户传入的模型名称中的点剔除掉,这样就能兼容已有的 API 了。

目前来看az基本在复用openai的那些东西

songquanpeng commented 1 year ago

但是还是有点不兼容的地方。

已推送 v0.2.3-alpha.1

utopeadia commented 1 year ago

但是还是有点不兼容的地方。

已推送 v0.2.3-alpha.1

请问下您用的什么客户端,我使用utools的插件会报错 Unexpected token ‘D’, "[DONE] " is not valid JSON

songquanpeng commented 1 year ago

Postman,看来你的插件不支持 SSE,stream 模式下返回内容并不是 JSON,你可以把参数里的 stream 去掉,这样就是返回 JSON 了。

utopeadia commented 1 year ago

Postman,看来你的插件不支持 SSE,stream 模式下返回内容并不是 JSON,你可以把参数里的 stream 去掉,这样就是返回 JSON 了。 明白了谢谢

songquanpeng commented 1 year ago

已支持配置默认 API 版本,已推送 v0.2.3

songquanpeng commented 1 year ago

如果接下来测试没问题,该 issue 就可以关掉了。

aiastia commented 1 year ago

大佬这么快就搞定了呀👍 话说能否添加一个渠道可用性的检测。 目前是禁用其他的来解决的

songquanpeng commented 1 year ago

大佬这么快就搞定了呀👍 话说能否添加一个渠道可用性的检测。 目前是禁用其他的来解决的

新开 issue 吧。

songquanpeng commented 1 year ago

如果 Azure 渠道有问题,欢迎重开此 issue。

aiastia commented 1 year ago

如果接下来测试没问题,该 issue 就可以关掉了。

好像不行 名称是写 gpt-35-turbo 吗 api 版本0301

songquanpeng commented 1 year ago

不应该啊,这个我是测试过的,Azure 控制台那里的部署名称是这样的吗? image

aiastia commented 1 year ago

用的是ios 的Openchat win 上的 chatbox 也不行

songquanpeng commented 1 year ago

其他通道类型 Okay 吗?

aiastia commented 1 year ago

其他通道类型 Okay 吗?

是的 openai sb 和 自定义反代的openai 还有api2d 都可以

songquanpeng commented 1 year ago

可以试一下其他客户端吗?我没有自己的 token,不方便测试。