MCPcopy Index your code
hub / github.com/simstudioai/sim / executeChatCompletionsRequest

Function executeChatCompletionsRequest

apps/sim/providers/azure-openai/index.ts:55–586  ·  view source on GitHub ↗

* Executes a request using the chat completions API. * Used when the endpoint URL indicates chat completions.

(
  request: ProviderRequest,
  azureEndpoint: string,
  azureApiVersion: string,
  deploymentName: string,
  pinnedFetch?: typeof fetch
)

Source from the content-addressed store, hash-verified

53 * Used when the endpoint URL indicates chat completions.
54 */
55async function executeChatCompletionsRequest(
56 request: ProviderRequest,
57 azureEndpoint: string,
58 azureApiVersion: string,
59 deploymentName: string,
60 pinnedFetch?: typeof fetch
61): Promise<ProviderResponse | StreamingExecution> {
62 logger.info('Using Azure OpenAI Chat Completions API', {
63 model: request.model,
64 endpoint: azureEndpoint,
65 deploymentName,
66 apiVersion: azureApiVersion,
67 hasSystemPrompt: !!request.systemPrompt,
68 hasMessages: !!request.messages?.length,
69 hasTools: !!request.tools?.length,
70 toolCount: request.tools?.length || 0,
71 hasResponseFormat: !!request.responseFormat,
72 stream: !!request.stream,
73 })
74
75 const azureOpenAI = new AzureOpenAI({
76 apiKey: request.apiKey!,
77 apiVersion: azureApiVersion,
78 endpoint: azureEndpoint,
79 ...(pinnedFetch ? { fetch: pinnedFetch } : {}),
80 })
81
82 const allMessages: ChatCompletionMessageParam[] = []
83
84 if (request.systemPrompt) {
85 allMessages.push({
86 role: 'system',
87 content: request.systemPrompt,
88 })
89 }
90
91 if (request.context) {
92 allMessages.push({
93 role: 'user',
94 content: request.context,
95 })
96 }
97
98 if (request.messages) {
99 for (const message of request.messages) {
100 if (!message.files?.length || message.role !== 'user') {
101 allMessages.push(message as ChatCompletionMessageParam)
102 continue
103 }
104
105 const attachments = prepareProviderAttachments(message.files, 'azure-openai')
106 const nonImage = attachments.find((a) => a.contentType !== 'image')
107 if (nonImage) {
108 throw new Error(
109 `File "${nonImage.filename}" (${nonImage.mimeType}) requires the Azure OpenAI Responses API endpoint; chat-completions deployments support images only`
110 )
111 }
112

Callers 1

index.tsFile · 0.85

Calls 15

createStreamingExecutionFunction · 0.90
calculateCostFunction · 0.90
checkForForcedToolUsageFunction · 0.90
prepareToolExecutionFunction · 0.90
executeToolFunction · 0.90
getErrorMessageFunction · 0.90
sumToolCostsFunction · 0.90

Tested by

no test coverage detected