@@ -13,20 +13,127 @@ enum AzureOpenAIAPI {
1313
1414 static var azureOpenAIResource : String = " "
1515
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+ }
1786}
1887
1988// MARK: Endpoint
2089
2190extension AzureOpenAIAPI : Endpoint {
2291
2392 var base : String {
24- " https:// \( Self . azureOpenAIResource) . openai.azure.com"
93+ " https:// \( Self . azureOpenAIResource) / openai.azure.com"
2594 }
2695
2796 var path : String {
2897 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+ }
30137 }
31138 }
32139}
0 commit comments