MCPcopy Index your code
hub / github.com/coder/coder / handleOpenAIWithLabels

Method handleOpenAIWithLabels

scaletest/llmmock/server.go:210–279  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

208}
209
210func (s *Server) handleOpenAIWithLabels(w http.ResponseWriter, r *http.Request) {
211 s.logger.Debug(r.Context(), "handling OpenAI request")
212 defer s.logger.Debug(r.Context(), "handled OpenAI request")
213
214 ctx := r.Context()
215 requestID := uuid.New()
216 now := time.Now()
217
218 var req llmRequest
219 if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
220 s.logger.Error(ctx, "failed to parse OpenAI request", slog.Error(err))
221 http.Error(w, "invalid request body", http.StatusBadRequest)
222 return
223 }
224
225 if s.artificialLatency > 0 {
226 time.Sleep(s.artificialLatency)
227 }
228
229 var resp openAIResponse
230 resp.ID = fmt.Sprintf("chatcmpl-%s", requestID.String()[:8])
231 resp.Object = "chat.completion"
232 resp.Created = now.Unix()
233 resp.Model = req.Model
234
235 var responseContent string
236 if s.responsePayloadSize > 0 {
237 pattern := "x"
238 repeated := strings.Repeat(pattern, s.responsePayloadSize)
239 responseContent = repeated[:s.responsePayloadSize]
240 } else {
241 responseContent = "This is a mock response from OpenAI."
242 }
243
244 resp.Choices = []struct {
245 Index int `json:"index"`
246 Message openAIMessage `json:"message"`
247 FinishReason string `json:"finish_reason"`
248 }{
249 {
250 Index: 0,
251 Message: openAIMessage{
252 Role: "assistant",
253 Content: responseContent,
254 },
255 FinishReason: "stop",
256 },
257 }
258
259 resp.Usage.PromptTokens = 10
260 resp.Usage.CompletionTokens = 5
261 resp.Usage.TotalTokens = 15
262
263 responseBody, _ := json.Marshal(resp)
264
265 if req.Stream {
266 s.sendOpenAIStream(ctx, w, resp)
267 } else {

Callers 1

handleOpenAIMethod · 0.95

Calls 10

sendOpenAIStreamMethod · 0.95
ContextMethod · 0.65
NewMethod · 0.65
SetMethod · 0.65
WriteMethod · 0.65
ErrorMethod · 0.45
StringMethod · 0.45
MarshalMethod · 0.45
HeaderMethod · 0.45
WriteHeaderMethod · 0.45

Tested by

no test coverage detected