Skip to content

Commit 7641966

Browse files
committed
Updated LLM
1 parent 78932af commit 7641966

File tree

15 files changed

+130
-60
lines changed

15 files changed

+130
-60
lines changed

agent.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,4 @@ type Agent interface {
1717

1818
// Embedding vector generation
1919
Embedding(context.Context, Model, string, ...Opt) ([]float64, error)
20-
21-
// Create user message context
22-
UserPrompt(string, ...Opt) Context
23-
24-
// Create the result of calling a tool
25-
ToolResult(id string, opts ...Opt) Context
2620
}

cmd/agent/generate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func (cmd *GenerateCmd) Run(globals *Globals) error {
3434
}
3535

3636
// Generate the content
37-
response, err := agent.Generate(ctx, model, agent.UserPrompt(cmd.Text))
37+
response, err := agent.Generate(ctx, model, model.UserPrompt(cmd.Text))
3838
if err != nil {
3939
return err
4040
}

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ module github.com/mutablelogic/go-llm
33
go 1.23.5
44

55
require (
6+
github.com/alecthomas/kong v1.7.0
67
github.com/mutablelogic/go-client v1.0.9
78
github.com/stretchr/testify v1.9.0
89
)

go.sum

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
1+
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
2+
github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
3+
github.com/alecthomas/kong v1.7.0 h1:MnT8+5JxFDCvISeI6vgd/mFbAJwueJ/pqQNzZMsiqZE=
4+
github.com/alecthomas/kong v1.7.0/go.mod h1:p2vqieVMeTAnaC83txKtXe8FLke2X07aruPWXyMPQrU=
5+
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
6+
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
17
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
28
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
39
github.com/djthorpe/go-errors v1.0.3 h1:GZeMPkC1mx2vteXLI/gvxZS0Ee9zxzwD1mcYyKU5jD0=
410
github.com/djthorpe/go-errors v1.0.3/go.mod h1:HtfrZnMd6HsX75Mtbv9Qcnn0BqOrrFArvCaj3RMnZhY=
11+
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
12+
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
513
github.com/mutablelogic/go-client v1.0.9 h1:Eh4sjQOFDldP/L3IizqkcOD3WigZR+u1VaHTUM4ujYw=
614
github.com/mutablelogic/go-client v1.0.9/go.mod h1:VLyB8j8IBJSK/FXvvqhmq93PRWDKkyLu8R7V2Vudb6A=
715
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=

model.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,10 @@ package llm
44
type Model interface {
55
// Return the name of the model
66
Name() string
7+
8+
// Create user prompt for a model
9+
UserPrompt(string, ...Opt) Context
10+
11+
// Create the result of calling a tool for a model
12+
ToolResult(id string, opts ...Opt) Context
713
}

pkg/agent/agent.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,6 @@ func (a *Agent) Embedding(context.Context, llm.Model, string, ...llm.Opt) ([]flo
152152
return nil, llm.ErrNotImplemented
153153
}
154154

155-
// Create user message context
156-
func (a *Agent) UserPrompt(string, ...llm.Opt) llm.Context {
157-
return nil
158-
}
159-
160155
// Create the result of calling a tool
161156
func (a *Agent) ToolResult(id string, opts ...llm.Opt) llm.Context {
162157
return nil

pkg/agent/context.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package agent
2+
3+
// Packages
4+
5+
///////////////////////////////////////////////////////////////////////////////
6+
// PUBLIC METHODS

pkg/agent/generate.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package agent
22

33
import (
44
"context"
5+
"log"
56

67
// Packages
78
llm "github.com/mutablelogic/go-llm"
@@ -22,7 +23,13 @@ func (a *Agent) Generate(ctx context.Context, m llm.Model, context llm.Context,
2223
agent = agent_
2324
}
2425

25-
// TODO: Translate all the opts
26+
// Apply the options
27+
opts, err := translate(agent, opts...)
28+
if err != nil {
29+
return nil, err
30+
}
31+
32+
log.Print("agent.Generate:", m, context, opts)
2633

2734
// Call Generate for the agent
2835
return agent.Generate(ctx, m, context, opts...)

pkg/agent/opt.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,16 @@ import (
1414
type opt struct {
1515
agents map[string]llm.Agent
1616
tools map[string]llm.Tool
17+
18+
// Selected agent
19+
agent llm.Agent
20+
opts []llm.Opt
1721
}
1822

1923
////////////////////////////////////////////////////////////////////////////////
2024
// LIFECYCLE
2125

26+
// Apply options
2227
func apply(opts ...llm.Opt) (*opt, error) {
2328
o := new(opt)
2429
o.agents = make(map[string]llm.Agent)
@@ -30,6 +35,28 @@ func apply(opts ...llm.Opt) (*opt, error) {
3035
return o, nil
3136
}
3237

38+
// Translate options from general to agent-specific
39+
func translate(agent llm.Agent, opts ...llm.Opt) ([]llm.Opt, error) {
40+
o := new(opt)
41+
42+
// Set agent
43+
if agent == nil {
44+
return nil, llm.ErrBadParameter.With("agent")
45+
} else {
46+
o.agent = agent
47+
}
48+
49+
// Apply options
50+
for _, opt := range opts {
51+
if err := opt(o); err != nil {
52+
return nil, err
53+
}
54+
}
55+
56+
// Return translated options
57+
return o.opts, nil
58+
}
59+
3360
////////////////////////////////////////////////////////////////////////////////
3461
// PUBLIC METHODS
3562

@@ -73,12 +100,19 @@ func WithTools(tools ...llm.Tool) llm.Opt {
73100
// PRIVATE METHODS
74101

75102
func (o *opt) withAgent(agent llm.Agent) error {
103+
// Check parameters
104+
if agent == nil || o.agents == nil {
105+
return llm.ErrBadParameter.With("withAgent")
106+
}
107+
108+
// Add agent
76109
name := agent.Name()
77110
if _, exists := o.agents[name]; exists {
78111
return llm.ErrConflict.Withf("Agent %q already exists", name)
79112
} else {
80113
o.agents[name] = agent
81114
}
115+
82116
// Return success
83117
return nil
84118
}

pkg/anthropic/message.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ func (m message) Role() string {
111111
}
112112

113113
// Create user message context
114-
func (*Client) UserPrompt(text string, opts ...llm.Opt) llm.Context {
114+
func (*model) UserPrompt(text string, opts ...llm.Opt) llm.Context {
115115
// Get attachments
116116
opt, err := apply(opts...)
117117
if err != nil {
@@ -135,7 +135,7 @@ func (*Client) UserPrompt(text string, opts ...llm.Opt) llm.Context {
135135
}
136136

137137
// Create the result of calling a tool
138-
func (*Client) ToolResult(id string, opts ...llm.Opt) llm.Context {
138+
func (*model) ToolResult(id string, opts ...llm.Opt) llm.Context {
139139
context := new(message)
140140
context.MessageMeta.Role = "user"
141141
context.MessageMeta.Content = make([]*Content, 0, 1)

0 commit comments

Comments
 (0)