MCPcopy
hub / github.com/the-open-agent/openagent / QueryText

Method QueryText

model/volcengine.go:239–337  ·  view source on GitHub ↗
(question string, writer io.Writer, history []*RawMessage, prompt string, knowledgeMessages []*RawMessage, toolSession *ToolSession, lang string)

Source from the content-addressed store, hash-verified

237}
238
239func (p *VolcengineModelProvider) QueryText(question string, writer io.Writer, history []*RawMessage, prompt string, knowledgeMessages []*RawMessage, toolSession *ToolSession, lang string) (*ModelResult, error) {
240 ctx := context.Background()
241 flusher, ok := writer.(http.Flusher)
242 if !ok {
243 return nil, fmt.Errorf(i18n.Translate(lang, "model:writer does not implement http.Flusher"))
244 }
245
246 client := arkruntime.NewClientWithApiKey(p.apiKey)
247
248 messages := p.buildMessages(question, history, prompt, knowledgeMessages)
249
250 request := model.CreateChatCompletionRequest{
251 Model: p.subType,
252 Messages: messages,
253 Temperature: &p.temperature,
254 TopP: &p.topP,
255 StreamOptions: &model.StreamOptions{IncludeUsage: true},
256 }
257
258 thinkingType := model.ThinkingTypeDisabled
259 if p.enableThinking {
260 thinkingType = model.ThinkingTypeEnabled
261 }
262 request.Thinking = &model.Thinking{Type: thinkingType}
263
264 flushData := func(data, eventType string) error {
265 if _, err := fmt.Fprintf(writer, "event: %s\ndata: %s\n\n", eventType, data); err != nil {
266 return err
267 }
268 flusher.Flush()
269 return nil
270 }
271
272 stream, err := client.CreateChatCompletionStream(ctx, request)
273 if err != nil {
274 logs.Error("stream chat error: %v", err)
275 return nil, err
276 }
277 defer stream.Close()
278
279 modelResult := newModelResult(0, 0, 0)
280 var reasoningData strings.Builder
281 isLeadingReturn := true
282
283 for {
284 response, recvErr := stream.Recv()
285
286 if response.Usage != nil {
287 modelResult.PromptTokenCount += response.Usage.PromptTokens
288 modelResult.ResponseTokenCount += response.Usage.CompletionTokens
289 modelResult.TotalTokenCount += response.Usage.TotalTokens
290 }
291
292 if recvErr != nil {
293 if recvErr == io.EOF {
294 break
295 }
296 return nil, recvErr

Callers

nothing calls this directly

Calls 8

buildMessagesMethod · 0.95
calculatePriceMethod · 0.95
TranslateFunction · 0.92
newModelResultFunction · 0.85
ErrorMethod · 0.80
FlushMethod · 0.45
CloseMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected