MCPcopy Create free account
hub / github.com/diillson/chatcli / SendPrompt

Method SendPrompt

server/handler_session.go:26–57  ·  view source on GitHub ↗

SendPrompt handles a single prompt request.

(ctx context.Context, req *pb.SendPromptRequest)

Source from the content-addressed store, hash-verified

24
25// SendPrompt handles a single prompt request.
26func (h *Handler) SendPrompt(ctx context.Context, req *pb.SendPromptRequest) (*pb.SendPromptResponse, error) {
27 if req.Prompt == "" {
28 return nil, status.Errorf(codes.InvalidArgument, "%s", i18n.T("server.session.prompt_empty"))
29 }
30
31 llmClient, err := h.getClient(req.Provider, req.Model, req.ClientApiKey, req.ProviderConfig)
32 if err != nil {
33 h.logger.Error(i18n.T("server.session.llm_client_failed"), zap.Error(err))
34 return nil, status.Errorf(codes.Internal, "%s", i18n.T("server.session.get_client_error", err))
35 }
36
37 history := protoToHistory(req.History)
38 maxTokens := int(req.MaxTokens)
39
40 enrichedPrompt := h.enrichPrompt(req.Prompt)
41 response, err := llmClient.SendPrompt(ctx, enrichedPrompt, history, maxTokens)
42 if err != nil {
43 h.logger.Error(i18n.T("server.session.send_prompt_failed"), zap.Error(err))
44 return nil, status.Errorf(codes.Internal, "%s", i18n.T("server.session.llm_error", err))
45 }
46
47 provider := req.Provider
48 if provider == "" {
49 provider = h.defaultProvider
50 }
51
52 return &pb.SendPromptResponse{
53 Response: response,
54 Model: llmClient.GetModelName(),
55 Provider: provider,
56 }, nil
57}
58
59// StreamPrompt handles a streaming prompt request.
60func (h *Handler) StreamPrompt(req *pb.StreamPromptRequest, stream pb.ChatCLIService_StreamPromptServer) error {

Calls 8

getClientMethod · 0.95
enrichPromptMethod · 0.95
TFunction · 0.92
protoToHistoryFunction · 0.85
ErrorfMethod · 0.80
ErrorMethod · 0.65
SendPromptMethod · 0.65
GetModelNameMethod · 0.65