@@ -13,20 +13,127 @@ enum AzureOpenAIAPI {
13
13
14
14
static var azureOpenAIResource : String = " "
15
15
16
- case chat( deploymentID: String ) // https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#chat-completions
16
+ /// https://learn.microsoft.com/en-us/azure/ai-services/openai/assistants-reference?tabs=python
17
+ /// https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/assistant
18
+ case assistant( AssistantCategory )
19
+ /// https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#chat-completions
20
+ case chat( deploymentID: String )
21
+ /// https://learn.microsoft.com/en-us/azure/ai-services/openai/assistants-reference-messages?tabs=python
22
+ case message( MessageCategory )
23
+ /// https://learn.microsoft.com/en-us/azure/ai-services/openai/assistants-reference-runs?tabs=python
24
+ case run( RunCategory )
25
+ /// https://learn.microsoft.com/en-us/azure/ai-services/openai/assistants-reference-runs?tabs=python#list-run-steps
26
+ case runStep( RunStepCategory )
27
+ /// https://learn.microsoft.com/en-us/azure/ai-services/openai/assistants-reference-threads?tabs=python#create-a-thread
28
+ case thread( ThreadCategory )
29
+ /// https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/file-search?tabs=python#vector-stores
30
+ case vectorStore( VectorStoreCategory )
31
+ /// https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/file-search?tabs=python#vector-stores
32
+ case vectorStoreFile( VectorStoreFileCategory )
33
+
34
+ enum AssistantCategory {
35
+ case create
36
+ case list
37
+ case retrieve( assistantID: String )
38
+ case modify( assistantID: String )
39
+ case delete( assistantID: String )
40
+ }
41
+
42
+ enum MessageCategory {
43
+ case create( threadID: String )
44
+ case retrieve( threadID: String , messageID: String )
45
+ case modify( threadID: String , messageID: String )
46
+ case list( threadID: String )
47
+ }
48
+
49
+ enum RunCategory {
50
+ case create( threadID: String )
51
+ case retrieve( threadID: String , runID: String )
52
+ case modify( threadID: String , runID: String )
53
+ case list( threadID: String )
54
+ case cancel( threadID: String , runID: String )
55
+ case submitToolOutput( threadID: String , runID: String )
56
+ case createThreadAndRun
57
+ }
58
+
59
+ enum RunStepCategory {
60
+ case retrieve( threadID: String , runID: String , stepID: String )
61
+ case list( threadID: String , runID: String )
62
+ }
63
+
64
+ enum ThreadCategory {
65
+ case create
66
+ case retrieve( threadID: String )
67
+ case modify( threadID: String )
68
+ case delete( threadID: String )
69
+ }
70
+
71
+ enum VectorStoreCategory {
72
+ case create
73
+ case list
74
+ case retrieve( vectorStoreID: String )
75
+ case modify( vectorStoreID: String )
76
+ case delete( vectorStoreID: String )
77
+ }
78
+
79
+ /// https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/file-search?tabs=python#file-search-support
80
+ enum VectorStoreFileCategory {
81
+ case create( vectorStoreID: String )
82
+ case list( vectorStoreID: String )
83
+ case retrieve( vectorStoreID: String , fileID: String )
84
+ case delete( vectorStoreID: String , fileID: String )
85
+ }
17
86
}
18
87
19
88
// MARK: Endpoint
20
89
21
90
extension AzureOpenAIAPI : Endpoint {
22
91
23
92
var base : String {
24
- " https:// \( Self . azureOpenAIResource) . openai.azure.com"
93
+ " https:// \( Self . azureOpenAIResource) / openai.azure.com"
25
94
}
26
95
27
96
var path : String {
28
97
switch self {
29
- case . chat( let deploymentID) : " /openai/deployments/ \( deploymentID) /chat/completions "
98
+ case . chat( let deploymentID) : return " /openai/deployments/ \( deploymentID) /chat/completions "
99
+ case . assistant( let category) :
100
+ switch category {
101
+ case . create, . list: return " /openai/assistants "
102
+ case . retrieve( let assistantID) , . modify( let assistantID) , . delete( let assistantID) : return " /openai/assistants/ \( assistantID) "
103
+ }
104
+ case . message( let category) :
105
+ switch category {
106
+ case . create( let threadID) , . list( let threadID) : return " /openai/threads/ \( threadID) /messages "
107
+ case . retrieve( let threadID, let messageID) , . modify( let threadID, let messageID) : return " /openai/threads/ \( threadID) /messages/ \( messageID) "
108
+ }
109
+ case . run( let category) :
110
+ switch category {
111
+ case . create( let threadID) , . list( let threadID) : return " /openai/threads/ \( threadID) /runs "
112
+ case . retrieve( let threadID, let runID) , . modify( let threadID, let runID) : return " /openai/threads/ \( threadID) /runs/ \( runID) "
113
+ case . cancel( let threadID, let runID) : return " /openai/threads/ \( threadID) /runs/ \( runID) /cancel "
114
+ case . submitToolOutput( let threadID, let runID) : return " /openai/threads/ \( threadID) /runs/ \( runID) //submit_tool_outputs "
115
+ case . createThreadAndRun: return " /openai/threads/runs "
116
+ }
117
+ case . runStep( let category) :
118
+ switch category {
119
+ case . retrieve( let threadID, let runID, let stepID) : return " /openai/threads/ \( threadID) /runs/ \( runID) /steps/ \( stepID) "
120
+ case . list( let threadID, let runID) : return " /openai/threads/ \( threadID) /runs/ \( runID) /steps "
121
+ }
122
+ case . thread( let category) :
123
+ switch category {
124
+ case . create: return " /openai/threads "
125
+ case . retrieve( let threadID) , . modify( let threadID) , . delete( let threadID) : return " /openai/threads/ \( threadID) "
126
+ }
127
+ case . vectorStore( let category) :
128
+ switch category {
129
+ case . create, . list: return " /openai/vector_stores "
130
+ case . retrieve( let vectorStoreID) , . modify( let vectorStoreID) , . delete( let vectorStoreID) : return " /openai/vector_stores/ \( vectorStoreID) "
131
+ }
132
+ case . vectorStoreFile( let category) :
133
+ switch category {
134
+ case . create( let vectorStoreID) , . list( let vectorStoreID) : return " /openai/vector_stores/ \( vectorStoreID) /files "
135
+ case . retrieve( let vectorStoreID, let fileID) , . delete( let vectorStoreID, let fileID) : return " /openai/vector_stores/ \( vectorStoreID) /files/ \( fileID) "
136
+ }
30
137
}
31
138
}
32
139
}
0 commit comments