feat(call_agents): merge metadata of results (#126)

* feat(call_agents): merge metadata of results

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* chore: correct env typo

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* Update services/actions/callagents.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore: add icon to thinking

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Ettore Di Giacinto
2025-04-01 21:57:32 +02:00
committed by GitHub
parent 53d135bec9
commit e90c192063
6 changed files with 33 additions and 6 deletions

View File

@@ -86,7 +86,7 @@ Access your agents at `http://localhost:3000`
| `LOCALAGENT_MODEL` | Your go-to model |
| `LOCALAGENT_MULTIMODAL_MODEL` | Optional model for multimodal capabilities |
| `LOCALAGENT_LLM_API_URL` | OpenAI-compatible API server URL |
| `LOCALAGENT_API_KEY` | API authentication |
| `LOCALAGENT_LLM_API_KEY` | API authentication |
| `LOCALAGENT_TIMEOUT` | Request timeout settings |
| `LOCALAGENT_STATE_DIR` | Where state gets stored |
| `LOCALAGENT_LOCALRAG_URL` | LocalRAG connection |

View File

@@ -67,7 +67,7 @@ services:
environment:
- LOCALAGENT_MODEL=mlabonne_gemma-3-27b-it-abliterated
- LOCALAGENT_LLM_API_URL=http://localai:8080
- LOCALAGENT_API_KEY=sk-1234567890
- LOCALAGENT_LLM_API_KEY=sk-1234567890
- LOCALAGENT_LOCALRAG_URL=http://ragserver:8080
- LOCALAGENT_STATE_DIR=/pool
- LOCALAGENT_TIMEOUT=5m

View File

@@ -65,7 +65,7 @@ services:
environment:
- LOCALAGENT_MODEL=arcee-agent
- LOCALAGENT_LLM_API_URL=http://localai:8080
- LOCALAGENT_API_KEY=sk-1234567890
- LOCALAGENT_LLM_API_KEY=sk-1234567890
- LOCALAGENT_LOCALRAG_URL=http://ragserver:8080
- LOCALAGENT_STATE_DIR=/pool
- LOCALAGENT_TIMEOUT=5m

View File

@@ -14,7 +14,7 @@ import (
var testModel = os.Getenv("LOCALAGENT_MODEL")
var multimodalModel = os.Getenv("LOCALAGENT_MULTIMODAL_MODEL")
var apiURL = os.Getenv("LOCALAGENT_LLM_API_URL")
var apiKey = os.Getenv("LOCALAGENT_API_KEY")
var apiKey = os.Getenv("LOCALAGENT_LLM_API_KEY")
var timeout = os.Getenv("LOCALAGENT_TIMEOUT")
var stateDir = os.Getenv("LOCALAGENT_STATE_DIR")
var localRAG = os.Getenv("LOCALAGENT_LOCALRAG_URL")

View File

@@ -53,7 +53,34 @@ func (a *CallAgentAction) Run(ctx context.Context, params types.ActionParams) (t
return types.ActionResult{}, err
}
return types.ActionResult{Result: resp.Response}, nil
metadata := make(map[string]interface{})
for _, s := range resp.State {
for k, v := range s.Metadata {
if existingValue, ok := metadata[k]; ok {
switch existingValue := existingValue.(type) {
case []string:
switch v := v.(type) {
case []string:
metadata[k] = append(existingValue, v...)
case string:
metadata[k] = append(existingValue, v)
}
case string:
switch v := v.(type) {
case []string:
metadata[k] = append([]string{existingValue}, v...)
case string:
metadata[k] = []string{existingValue, v}
}
}
} else {
metadata[k] = v
}
}
}
return types.ActionResult{Result: resp.Response, Metadata: metadata}, nil
}
func (a *CallAgentAction) Definition() types.ActionDefinition {

View File

@@ -45,7 +45,7 @@ type Slack struct {
conversationTracker *ConversationTracker[string]
}
const thinkingMessage = "thinking..."
const thinkingMessage = ":hourglass: thinking..."
func NewSlack(config map[string]string) *Slack {