azure openai
This commit is contained in:
@@ -14,7 +14,7 @@ OpenCat for Team的开源实现
|
|||||||
|
|
||||||
| 任务 | 完成情况 |
|
| 任务 | 完成情况 |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
|Azure OpenAI | ✅|
|
|[Azure OpenAI](./doc/azure.md) | ✅|
|
||||||
| ... | ... |
|
| ... | ... |
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+8
-2
@@ -1,4 +1,10 @@
|
|||||||
# Azure OpenAI
|
# Azure OpenAI for team
|
||||||
|
|
||||||
需要获取 api-key和endpoint
|
需要获取 api-key和endpoint [https://[resource name].openai.azure.com/)
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
- opencat 使用方式
|
||||||
|
- key name以 azure.[resource name]的方式添加
|
||||||
|
- 密钥任取一个
|
||||||
|
- <img src="./azure_openai_for_team.png" alt="azure_openai_for_team" height="600">
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 294 KiB |
@@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
https://learn.microsoft.com/zh-cn/azure/cognitive-services/openai/chatgpt-quickstart
|
||||||
|
|
||||||
|
curl $AZURE_OPENAI_ENDPOINT/openai/deployments/gpt-35-turbo/chat/completions?api-version=2023-03-15-preview \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-H "api-key: $AZURE_OPENAI_KEY" \
|
||||||
|
-d '{
|
||||||
|
"model": "gpt-3.5-turbo",
|
||||||
|
"messages": [{"role": "user", "content": "你好"}]
|
||||||
|
}'
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
package azureopenai
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestModels(t *testing.T) {
|
||||||
|
type args struct {
|
||||||
|
endpoint string
|
||||||
|
apikey string
|
||||||
|
}
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
args args
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "test",
|
||||||
|
args: args{
|
||||||
|
endpoint: "https://mirrors2.openai.azure.com",
|
||||||
|
apikey: "696a7729234c438cb38f24da22ee602d",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
got, err := Models(tt.args.endpoint, tt.args.apikey)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Models() error = %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, data := range got.Data {
|
||||||
|
fmt.Println(data.Model, data.ID)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// curl https://mirrors2.openai.azure.com/openai/deployments?api-version=2023-03-15-preview \
|
||||||
|
// -H "Content-Type: application/json" \
|
||||||
|
// -H "api-key: 696a7729234c438cb38f24da22ee602d"
|
||||||
+2
-3
@@ -227,7 +227,7 @@ func HandleAddKey(c *gin.Context) {
|
|||||||
ApiType: "azure_openai",
|
ApiType: "azure_openai",
|
||||||
Name: body.Name,
|
Name: body.Name,
|
||||||
Key: body.Key,
|
Key: body.Key,
|
||||||
EndPoint: keynames[1],
|
ResourceNmae: keynames[1],
|
||||||
}
|
}
|
||||||
if err := store.CreateKey(k); err != nil {
|
if err := store.CreateKey(k); err != nil {
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{"error": gin.H{
|
c.JSON(http.StatusInternalServerError, gin.H{"error": gin.H{
|
||||||
@@ -388,7 +388,7 @@ func HandleProy(c *gin.Context) {
|
|||||||
// 创建 API 请求
|
// 创建 API 请求
|
||||||
switch onekey.ApiType {
|
switch onekey.ApiType {
|
||||||
case "azure_openai":
|
case "azure_openai":
|
||||||
req, err = http.NewRequest(c.Request.Method, fmt.Sprintf("https://%s.openai.azure.com/openai/deployments/%s/chat/completions?api-version=2023-03-15-preview", onekey.EndPoint, modelmap(chatreq.Model)), &body)
|
req, err = http.NewRequest(c.Request.Method, fmt.Sprintf("https://%s.openai.azure.com/openai/deployments/%s/chat/completions?api-version=2023-03-15-preview", onekey.ResourceNmae, modelmap(chatreq.Model)), &body)
|
||||||
req.Header = c.Request.Header
|
req.Header = c.Request.Header
|
||||||
req.Header.Set("api-key", onekey.Key)
|
req.Header.Set("api-key", onekey.Key)
|
||||||
case "openai":
|
case "openai":
|
||||||
@@ -449,7 +449,6 @@ func HandleProy(c *gin.Context) {
|
|||||||
reader := bufio.NewReader(resp.Body)
|
reader := bufio.NewReader(resp.Body)
|
||||||
|
|
||||||
if resp.StatusCode == 200 && localuser {
|
if resp.StatusCode == 200 && localuser {
|
||||||
|
|
||||||
if isStream {
|
if isStream {
|
||||||
contentCh := fetchResponseContent(c, reader)
|
contentCh := fetchResponseContent(c, reader)
|
||||||
var buffer bytes.Buffer
|
var buffer bytes.Buffer
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ type Key struct {
|
|||||||
UserId string `json:"-,omitempty"`
|
UserId string `json:"-,omitempty"`
|
||||||
ApiType string `gorm:"column:api_type"`
|
ApiType string `gorm:"column:api_type"`
|
||||||
EndPoint string `gorm:"column:endpoint"`
|
EndPoint string `gorm:"column:endpoint"`
|
||||||
|
ResourceNmae string `gorm:"column:resource_name"`
|
||||||
DeploymentName string `gorm:"column:deployment_name"`
|
DeploymentName string `gorm:"column:deployment_name"`
|
||||||
CreatedAt time.Time `json:"createdAt,omitempty"`
|
CreatedAt time.Time `json:"createdAt,omitempty"`
|
||||||
UpdatedAt time.Time `json:"updatedAt,omitempty"`
|
UpdatedAt time.Time `json:"updatedAt,omitempty"`
|
||||||
|
|||||||
Reference in New Issue
Block a user