MCPcopy Create free account
hub / github.com/InferCore/InferCore / invokeNonStream

Method invokeNonStream

internal/adapters/vllm/vllm.go:65–142  ·  view source on GitHub ↗
(ctx context.Context, text, model string, streamRequested bool)

Source from the content-addressed store, hash-verified

63}
64
65func (a *Adapter) invokeNonStream(ctx context.Context, text, model string, streamRequested bool) (types.BackendResponse, error) {
66 t0 := time.Now()
67 payload := map[string]any{
68 "model": model,
69 "messages": []map[string]string{
70 {"role": "user", "content": text},
71 },
72 "stream": false,
73 }
74
75 raw, err := json.Marshal(payload)
76 if err != nil {
77 return types.BackendResponse{}, err
78 }
79
80 chatURL := a.chatCompletionsURL()
81 httpReq, err := http.NewRequestWithContext(ctx, http.MethodPost, chatURL, bytes.NewReader(raw))
82 if err != nil {
83 return types.BackendResponse{}, err
84 }
85 httpReq.Header.Set("Content-Type", "application/json")
86 a.applyHeaders(httpReq)
87
88 resp, err := a.httpClient.Do(httpReq)
89 if err != nil {
90 if errors.Is(err, context.DeadlineExceeded) {
91 return types.BackendResponse{}, upstream.New(upstream.KindTimeout, err.Error())
92 }
93 return types.BackendResponse{}, err
94 }
95 defer resp.Body.Close()
96 if resp.StatusCode < 200 || resp.StatusCode >= 300 {
97 if resp.StatusCode >= 500 {
98 return types.BackendResponse{}, upstream.New(upstream.KindUpstream5xx, fmt.Sprintf("openai-compatible invoke failed status=%d", resp.StatusCode))
99 }
100 return types.BackendResponse{}, upstream.New(upstream.KindUpstream4xx, fmt.Sprintf("openai-compatible invoke failed status=%d", resp.StatusCode))
101 }
102
103 var parsed struct {
104 Choices []struct {
105 Message struct {
106 Content string `json:"content"`
107 } `json:"message"`
108 Text string `json:"text"`
109 } `json:"choices"`
110 }
111 if err := json.NewDecoder(resp.Body).Decode(&parsed); err != nil {
112 return types.BackendResponse{}, upstream.New(upstream.KindBackendError, err.Error())
113 }
114
115 output := ""
116 if len(parsed.Choices) > 0 {
117 if parsed.Choices[0].Message.Content != "" {
118 output = parsed.Choices[0].Message.Content
119 } else {
120 output = parsed.Choices[0].Text
121 }
122 }

Callers 1

InvokeMethod · 0.95

Calls 5

chatCompletionsURLMethod · 0.95
applyHeadersMethod · 0.95
NewFunction · 0.92
CloseMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected