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

Function executeOllamaProviderRequest

apps/sim/providers/ollama/core.ts:68–620  ·  view source on GitHub ↗
(
  request: ProviderRequest,
  config: OllamaCoreConfig
)

Source from the content-addressed store, hash-verified

66 * call drops tools entirely rather than relying on `tool_choice: 'none'`.
67 */
68export async function executeOllamaProviderRequest(
69 request: ProviderRequest,
70 config: OllamaCoreConfig
71): Promise<ProviderResponse | StreamingExecution> {
72 const { providerId, providerLabel, logger } = config
73
74 logger.info(`Preparing ${providerLabel} request`, {
75 model: request.model,
76 hasSystemPrompt: !!request.systemPrompt,
77 hasMessages: !!request.messages?.length,
78 hasTools: !!request.tools?.length,
79 toolCount: request.tools?.length || 0,
80 hasResponseFormat: !!request.responseFormat,
81 stream: !!request.stream,
82 })
83
84 const ollama = config.createClient()
85
86 const allMessages: Message[] = []
87
88 if (request.systemPrompt) {
89 allMessages.push({
90 role: 'system',
91 content: request.systemPrompt,
92 })
93 }
94
95 if (request.context) {
96 allMessages.push({
97 role: 'user',
98 content: request.context,
99 })
100 }
101
102 if (request.messages) {
103 allMessages.push(...request.messages)
104 }
105 const formattedMessages = formatMessagesForProvider(allMessages, providerId) as Message[]
106
107 const tools = request.tools?.length
108 ? request.tools.map((tool) => adaptOpenAIChatToolSchema(tool))
109 : undefined
110
111 const payload: any = {
112 model: request.model,
113 messages: formattedMessages,
114 }
115
116 if (request.temperature !== undefined) payload.temperature = request.temperature
117 if (request.maxTokens != null) payload.max_tokens = request.maxTokens
118
119 let hasActiveTools = false
120 if (tools?.length) {
121 const filteredTools = tools.filter((tool) => {
122 const toolId = tool.function?.name
123 const toolConfig = request.tools?.find((t) => t.id === toolId)
124 return toolConfig?.usageControl !== 'none'
125 })

Callers 2

index.tsFile · 0.90
index.tsFile · 0.90

Calls 15

createStreamingExecutionFunction · 0.90
calculateCostFunction · 0.90
prepareToolExecutionFunction · 0.90
executeToolFunction · 0.90
getErrorMessageFunction · 0.90
sumToolCostsFunction · 0.90
applyJsonResponseFormatFunction · 0.85
finalizeTimingFunction · 0.85
infoMethod · 0.80

Tested by

no test coverage detected