rony-llm-agent/pkg/agent/README.es.md
Victor Vargas a38f63683b feat: add history messages, reasoning content, and adaptive language support
- Add optional history parameter to Run/RunStream for conversation context
- Add Reasoning/ReasoningDelta fields to completion and stream types
- Update llama.cpp adapter to propagate reasoning content from responses
- Default persona language now adapts to the user's language dynamically
2026-07-05 16:17:37 -07:00

1.7 KiB

pkg/agent

🌐 Idioma: English | Español

El bucle principal que ejecuta un agente LLM con guardrails.

Responsabilidad

Coordinar el ciclo iterativo entre el LLM y la ejecución de tools:

while iteration < MaxIterations:
    response = llm.Generate(messages, tools)
    if no tool calls: return response
    for tool_call in response.ToolCalls:
        if needs_approval: ask_user()
        result = execute(tool_call)
        append tool result to messages

API pública

type Loop interface {
    Run(ctx context.Context, input string, history ...llm.Message) (Response, error)
    RunStream(ctx context.Context, input string, history ...llm.Message) iter.Seq2[Chunk, error]
}

type Config struct {
    LLM          llm.LLMClient
    Persona      persona.Persona
    Tools        tools.Registry
    Sandbox      Sandbox
    MaxIters     int
    Approver     Approver        // nil = auto-approve all
    OnIteration  func(Iteration) // observability hook
}

type Response struct {
    Content     string
    ToolCalls   []tools.Call
    Iterations  int
    Duration    time.Duration
    TokenUsage  llm.TokenUsage
}

Garantías

  • Termination: Siempre termina (max iterations, error, o respuesta final)
  • Idempotencia: Re-ejecutar con el mismo input produce el mismo output (dado el mismo LLM)
  • Observabilidad: Cada iteración emite un span OpenTelemetry
  • Approval: Tool destructivos (Ask permission) requieren confirmación

Ver también