From 1e5028177f5c13b9c6a0e1e387ae893d20b20cfa Mon Sep 17 00:00:00 2001 From: John Costa Date: Thu, 17 Apr 2025 11:02:11 +0100 Subject: [PATCH] refactor(agents): not returning an error on factory method --- backend/agents/contact_agent.go | 4 ++-- backend/agents/event_agent.go | 12 +++++++----- backend/agents/location_agent.go | 4 ++-- backend/agents/note_agent.go | 4 ++-- backend/agents/orchestrator.go | 4 ++-- backend/events.go | 29 +++++------------------------ 6 files changed, 20 insertions(+), 37 deletions(-) diff --git a/backend/agents/contact_agent.go b/backend/agents/contact_agent.go index 2b105df..0383b8d 100644 --- a/backend/agents/contact_agent.go +++ b/backend/agents/contact_agent.go @@ -90,7 +90,7 @@ type linkContactArguments struct { ContactID string `json:"contactId"` } -func NewContactAgent(log *log.Logger, contactModel models.ContactModel) (client.AgentClient, error) { +func NewContactAgent(log *log.Logger, contactModel models.ContactModel) client.AgentClient { agentClient := client.CreateAgentClient(client.CreateAgentClientOptions{ SystemPrompt: contactPrompt, JsonTools: contactTools, @@ -151,5 +151,5 @@ func NewContactAgent(log *log.Logger, contactModel models.ContactModel) (client. return "Saved", nil }) - return agentClient, nil + return agentClient } diff --git a/backend/agents/event_agent.go b/backend/agents/event_agent.go index 150c77e..2224988 100644 --- a/backend/agents/event_agent.go +++ b/backend/agents/event_agent.go @@ -108,7 +108,7 @@ type linkEventArguments struct { EventID string `json:"eventId"` } -func NewEventAgent(log *log.Logger, eventsModel models.EventModel, locationAgent client.AgentClient) (client.AgentClient, error) { +func NewEventAgent(log *log.Logger, eventsModel models.EventModel, locationModel models.LocationModel) client.AgentClient { agentClient := client.CreateAgentClient(client.CreateAgentClientOptions{ SystemPrompt: eventPrompt, JsonTools: eventTools, @@ -116,6 +116,10 @@ func NewEventAgent(log *log.Logger, eventsModel models.EventModel, locationAgent EndToolCall: "finish", }) + locationAgent := NewLocationAgent(log.With("Locations 📍"), locationModel) + locationQuery := "Can you get me the ID of the location present in this image?" + locationAgent.Options.Query = &locationQuery + agentClient.ToolHandler.AddTool("listEvents", func(info client.ToolHandlerInfo, args string, call client.ToolCall) (any, error) { return eventsModel.List(context.Background(), info.UserId) }) @@ -179,12 +183,10 @@ func NewEventAgent(log *log.Logger, eventsModel models.EventModel, locationAgent agentClient.ToolHandler.AddTool("getEventLocationId", func(info client.ToolHandlerInfo, args string, call client.ToolCall) (any, error) { // TODO: reenable this when I'm creating the agent locally instead of getting it from above. - // query := "Can you get me the ID of the location present in this image?" - // locationAgent.Log = log.With("Locations 📍", true) - // locationAgent.RunAgent(info.UserId, info.ImageId, info.ImageName, *info.Image) + locationAgent.RunAgent(info.UserId, info.ImageId, info.ImageName, *info.Image) return locationAgent.Reply, nil }) - return agentClient, nil + return agentClient } diff --git a/backend/agents/location_agent.go b/backend/agents/location_agent.go index 209d58c..ba24e13 100644 --- a/backend/agents/location_agent.go +++ b/backend/agents/location_agent.go @@ -104,7 +104,7 @@ type linkLocationArguments struct { LocationID string `json:"locationId"` } -func NewLocationAgent(log *log.Logger, locationModel models.LocationModel) (client.AgentClient, error) { +func NewLocationAgent(log *log.Logger, locationModel models.LocationModel) client.AgentClient { agentClient := client.CreateAgentClient(client.CreateAgentClientOptions{ SystemPrompt: locationPrompt, JsonTools: locationTools, @@ -165,5 +165,5 @@ func NewLocationAgent(log *log.Logger, locationModel models.LocationModel) (clie return "ok", nil }) - return agentClient, nil + return agentClient } diff --git a/backend/agents/note_agent.go b/backend/agents/note_agent.go index fc26b8a..33b080f 100644 --- a/backend/agents/note_agent.go +++ b/backend/agents/note_agent.go @@ -68,7 +68,7 @@ func (agent NoteAgent) GetNotes(userId uuid.UUID, imageId uuid.UUID, imageName s return nil } -func NewNoteAgent(log *log.Logger, noteModel models.NoteModel) (NoteAgent, error) { +func NewNoteAgent(log *log.Logger, noteModel models.NoteModel) NoteAgent { client := client.CreateAgentClient(client.CreateAgentClientOptions{ SystemPrompt: noteAgentPrompt, }) @@ -78,5 +78,5 @@ func NewNoteAgent(log *log.Logger, noteModel models.NoteModel) (NoteAgent, error noteModel: noteModel, } - return agent, nil + return agent } diff --git a/backend/agents/orchestrator.go b/backend/agents/orchestrator.go index b5f68e4..830c22a 100644 --- a/backend/agents/orchestrator.go +++ b/backend/agents/orchestrator.go @@ -112,7 +112,7 @@ type Status struct { Ok bool `json:"ok"` } -func NewOrchestratorAgent(log *log.Logger, noteAgent NoteAgent, contactAgent client.AgentClient, locationAgent client.AgentClient, eventAgent client.AgentClient, imageName string, imageData []byte) (client.AgentClient, error) { +func NewOrchestratorAgent(log *log.Logger, noteAgent NoteAgent, contactAgent client.AgentClient, locationAgent client.AgentClient, eventAgent client.AgentClient, imageName string, imageData []byte) client.AgentClient { agent := client.CreateAgentClient(client.CreateAgentClientOptions{ SystemPrompt: orchestratorPrompt, JsonTools: orchestratorTools, @@ -160,5 +160,5 @@ func NewOrchestratorAgent(log *log.Logger, noteAgent NoteAgent, contactAgent cli }, errors.New("Finished! Kinda bad return type but...") }) - return agent, nil + return agent } diff --git a/backend/events.go b/backend/events.go index e82bb8c..cfb2c90 100644 --- a/backend/events.go +++ b/backend/events.go @@ -54,25 +54,10 @@ func ListenNewImageEvents(db *sql.DB, eventManager *EventManager) { ctx := context.Background() go func() { - noteAgent, err := agents.NewNoteAgent(createLogger("Notes 📝"), noteModel) - if err != nil { - panic(err) - } - - contactAgent, err := agents.NewContactAgent(createLogger("Contacts 👥"), contactModel) - if err != nil { - panic(err) - } - - locationAgent, err := agents.NewLocationAgent(createLogger("Locations 📍"), locationModel) - if err != nil { - panic(err) - } - - eventAgent, err := agents.NewEventAgent(createLogger("Events 📅"), eventModel, locationAgent) - if err != nil { - panic(err) - } + noteAgent := agents.NewNoteAgent(createLogger("Notes 📝"), noteModel) + contactAgent := agents.NewContactAgent(createLogger("Contacts 👥"), contactModel) + locationAgent := agents.NewLocationAgent(createLogger("Locations 📍"), locationModel) + eventAgent := agents.NewEventAgent(createLogger("Events 📅"), eventModel, locationModel) image, err := imageModel.GetToProcessWithData(ctx, imageId) if err != nil { @@ -85,11 +70,7 @@ func ListenNewImageEvents(db *sql.DB, eventManager *EventManager) { return } - orchestrator, err := agents.NewOrchestratorAgent(createLogger("Orchestrator 🎼"), noteAgent, contactAgent, locationAgent, eventAgent, image.Image.ImageName, image.Image.Image) - if err != nil { - panic(err) - } - + orchestrator := agents.NewOrchestratorAgent(createLogger("Orchestrator 🎼"), noteAgent, contactAgent, locationAgent, eventAgent, image.Image.ImageName, image.Image.Image) err = orchestrator.RunAgent(image.UserID, image.ImageID, image.Image.ImageName, image.Image.Image) if err != nil { databaseEventLog.Error("Orchestrator failed", "error", err)