Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
kardolus
GitHub Repository: kardolus/chatgpt-cli
Path: blob/main/agent/tools/llm.go
3434 views
1
package tools
2
3
import (
4
"context"
5
apiclient "github.com/kardolus/chatgpt-cli/api/client"
6
)
7
8
type LLM interface {
9
Complete(ctx context.Context, prompt string) (string, int, error)
10
}
11
12
type ClientLLM struct {
13
c *apiclient.Client
14
}
15
16
func NewClientLLM(c *apiclient.Client) *ClientLLM { return &ClientLLM{c: c} }
17
18
func (l *ClientLLM) Complete(ctx context.Context, prompt string) (string, int, error) {
19
// save
20
prevOmit := l.c.Config.OmitHistory
21
prevTemp := l.c.Config.Temperature
22
23
// set for agent internals
24
l.c.Config.OmitHistory = true
25
l.c.Config.Temperature = 0
26
27
// restore no matter what
28
defer func() {
29
l.c.Config.OmitHistory = prevOmit
30
l.c.Config.Temperature = prevTemp
31
}()
32
33
out, tokens, err := l.c.Query(ctx, prompt)
34
if err != nil {
35
return "", 0, err
36
}
37
return out, tokens, nil
38
}
39
40