Skip to content

Commit 78932af

Browse files
committed
Added generate in the agent
1 parent 0609803 commit 78932af

File tree

5 files changed

+87
-20
lines changed

5 files changed

+87
-20
lines changed

cmd/agent/generate.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"fmt"
6+
7+
// Packages
8+
llm "github.com/mutablelogic/go-llm"
9+
agent "github.com/mutablelogic/go-llm/pkg/agent"
10+
)
11+
12+
////////////////////////////////////////////////////////////////////////////////
13+
// TYPES
14+
15+
type GenerateCmd struct {
16+
Model string `arg:"" help:"Model name"`
17+
Text string `arg:"" help:"Text to generate a response for"`
18+
}
19+
20+
////////////////////////////////////////////////////////////////////////////////
21+
// PUBLIC METHODS
22+
23+
func (cmd *GenerateCmd) Run(globals *Globals) error {
24+
return runagent(globals, func(ctx context.Context, client llm.Agent) error {
25+
// Get the model
26+
// TODO: Model should be cached
27+
agent, ok := client.(*agent.Agent)
28+
if !ok {
29+
return fmt.Errorf("No agents found")
30+
}
31+
model, err := agent.GetModel(ctx, cmd.Model)
32+
if err != nil {
33+
return err
34+
}
35+
36+
// Generate the content
37+
response, err := agent.Generate(ctx, model, agent.UserPrompt(cmd.Text))
38+
if err != nil {
39+
return err
40+
}
41+
42+
// Print the response
43+
fmt.Println("RESPONSE=", response)
44+
return nil
45+
})
46+
}

cmd/agent/main.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,9 @@ type CLI struct {
4343
Globals
4444

4545
// Agents, Models and Tools
46-
Agents ListAgentsCmd `cmd:"" help:"Return a list of agents"`
47-
Models ListModelsCmd `cmd:"" help:"Return a list of models"`
46+
Agents ListAgentsCmd `cmd:"" help:"Return a list of agents"`
47+
Models ListModelsCmd `cmd:"" help:"Return a list of models"`
48+
Generate GenerateCmd `cmd:"" help:"Generate a response"`
4849
}
4950

5051
////////////////////////////////////////////////////////////////////////////////

pkg/agent/agent.go

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"context"
55
"encoding/json"
66
"errors"
7-
"fmt"
87
"slices"
98
"strings"
109

@@ -141,26 +140,13 @@ func (a *Agent) GetModel(ctx context.Context, name string, agents ...string) (ll
141140
}
142141
}
143142

143+
// Return not found
144+
result = errors.Join(result, llm.ErrNotFound.Withf("model %q", name))
145+
144146
// Return any errors
145147
return nil, result
146148
}
147149

148-
// Generate a response from a prompt
149-
func (a *Agent) Generate(ctx context.Context, m llm.Model, context llm.Context, opts ...llm.Opt) (llm.Context, error) {
150-
// Obtain the agent
151-
var agent llm.Agent
152-
if model, ok := m.(*model); !ok || model == nil {
153-
return nil, llm.ErrBadParameter.With("model")
154-
} else if agent_, exists := a.agents[model.Agent]; !exists {
155-
return nil, llm.ErrNotFound.Withf("agent %q", model.Agent)
156-
} else {
157-
agent = agent_
158-
}
159-
fmt.Println(agent)
160-
161-
return nil, llm.ErrNotImplemented
162-
}
163-
164150
// Embedding vector generation
165151
func (a *Agent) Embedding(context.Context, llm.Model, string, ...llm.Opt) ([]float64, error) {
166152
return nil, llm.ErrNotImplemented

pkg/agent/generate.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package agent
2+
3+
import (
4+
"context"
5+
6+
// Packages
7+
llm "github.com/mutablelogic/go-llm"
8+
)
9+
10+
///////////////////////////////////////////////////////////////////////////////
11+
// PUBLIC METHODS
12+
13+
// Generate a response from a prompt
14+
func (a *Agent) Generate(ctx context.Context, m llm.Model, context llm.Context, opts ...llm.Opt) (llm.Context, error) {
15+
// Obtain the agent
16+
var agent llm.Agent
17+
if model, ok := m.(*model); !ok || model == nil {
18+
return nil, llm.ErrBadParameter.With("model")
19+
} else if agent_, exists := a.agents[model.Agent]; !exists {
20+
return nil, llm.ErrNotFound.Withf("agent %q", model.Agent)
21+
} else {
22+
agent = agent_
23+
}
24+
25+
// TODO: Translate all the opts
26+
27+
// Call Generate for the agent
28+
return agent.Generate(ctx, m, context, opts...)
29+
}

pkg/anthropic/messages.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,12 @@ func (anthropic *Client) Messages(ctx context.Context, model llm.Model, context
234234
}
235235

236236
// Generate a response from a prompt
237-
func (*Client) Generate(context.Context, llm.Model, llm.Context, ...llm.Opt) (llm.Context, error) {
237+
func (anthropic *Client) Generate(ctx context.Context, model llm.Model, context llm.Context, opts ...llm.Opt) (llm.Context, error) {
238+
response, err := anthropic.Messages(ctx, model, context, opts...)
239+
if err != nil {
240+
return nil, err
241+
}
242+
fmt.Println(response)
238243
return nil, llm.ErrNotImplemented
239244
}
240245

0 commit comments

Comments
 (0)