Skip to content

Commit f880468

Browse files
authored
Merge pull request #12 from mutablelogic/dev
Added system prompt
2 parents f0df9bb + 5b4abc6 commit f880468

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

cmd/llm/chat2.go

+15-13
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,19 @@ import (
1616
// TYPES
1717

1818
type Chat2Cmd struct {
19-
Model string `arg:"" help:"Model name"`
20-
Token string `env:"TELEGRAM_TOKEN" help:"Telegram token" required:""`
19+
Model string `arg:"" help:"Model name"`
20+
TelegramToken string `env:"TELEGRAM_TOKEN" help:"Telegram token" required:""`
21+
System string `flag:"system" help:"Set the system prompt"`
2122
}
2223

2324
type Server struct {
2425
sync.RWMutex
2526
*telegram.Client
2627

2728
// Model and toolkit
28-
toolkit llm.ToolKit
2929
model llm.Model
30+
toolkit llm.ToolKit
31+
opts []llm.Opt
3032

3133
// Map of active sessions
3234
sessions map[string]llm.Context
@@ -35,11 +37,15 @@ type Server struct {
3537
////////////////////////////////////////////////////////////////////////////////
3638
// LIFECYCLE
3739

38-
func NewTelegramServer(token string, model llm.Model, toolkit llm.ToolKit, opts ...telegram.Opt) (*Server, error) {
40+
func NewTelegramServer(token string, model llm.Model, system string, toolkit llm.ToolKit, opts ...telegram.Opt) (*Server, error) {
3941
server := new(Server)
4042
server.sessions = make(map[string]llm.Context)
4143
server.model = model
4244
server.toolkit = toolkit
45+
server.opts = []llm.Opt{
46+
llm.WithToolKit(toolkit),
47+
llm.WithSystemPrompt(system),
48+
}
4349

4450
// Create a new telegram client
4551
opts = append(opts, telegram.WithCallback(server.receive))
@@ -58,12 +64,12 @@ func NewTelegramServer(token string, model llm.Model, toolkit llm.ToolKit, opts
5864

5965
func (cmd *Chat2Cmd) Run(globals *Globals) error {
6066
return run(globals, cmd.Model, func(ctx context.Context, model llm.Model) error {
61-
server, err := NewTelegramServer(cmd.Token, model, globals.toolkit, telegram.WithDebug(globals.Debug))
67+
server, err := NewTelegramServer(cmd.TelegramToken, model, cmd.System, globals.toolkit, telegram.WithDebug(globals.Debug))
6268
if err != nil {
6369
return err
6470
}
6571

66-
log.Printf("Running Telegram bot %q\n", server.Client.Name())
72+
log.Printf("Running Telegram bot %q with model %q\n", server.Client.Name(), model.Name())
6773

6874
var result error
6975
var wg sync.WaitGroup
@@ -103,7 +109,7 @@ func (telegram *Server) Purge() {
103109
telegram.Lock()
104110
defer telegram.Unlock()
105111
for user, session := range telegram.sessions {
106-
if session.SinceLast() > 10*time.Minute {
112+
if session.SinceLast() > 5*time.Minute {
107113
log.Printf("Purging session for %q\n", user)
108114
delete(telegram.sessions, user)
109115
}
@@ -116,10 +122,7 @@ func (telegram *Server) session(user string) llm.Context {
116122
if session, exists := telegram.sessions[user]; exists {
117123
return session
118124
}
119-
session := telegram.model.Context(
120-
llm.WithToolKit(telegram.toolkit),
121-
llm.WithSystemPrompt("Please reply to messages in markdown format."),
122-
)
125+
session := telegram.model.Context(telegram.opts...)
123126
telegram.sessions[user] = session
124127
return session
125128
}
@@ -130,7 +133,6 @@ func (telegram *Server) receive(ctx context.Context, msg telegram.Message) error
130133

131134
// Process the message
132135
text := msg.Text()
133-
text += "\n\nPlease reply in markdown format."
134136
if err := session.FromUser(ctx, text); err != nil {
135137
return err
136138
}
@@ -144,7 +146,7 @@ func (telegram *Server) receive(ctx context.Context, msg telegram.Message) error
144146
if text := session.Text(0); text != "" {
145147
msg.Reply(ctx, text, false)
146148
} else {
147-
msg.Reply(ctx, "_Gathering information_", true)
149+
msg.Reply(ctx, "Gathering information", true)
148150
}
149151

150152
results, err := telegram.toolkit.Run(ctx, calls...)

0 commit comments

Comments
 (0)