IR
irwinrodriguez.dev
Zuruck zur Dokumentation

Konfiguration

Benutzerdefinierte Tools (UDTs)

FoxAgent unterstutzt benutzerdefinierte Tools (UDTs), die Ihr KI-Agent aufrufen kann. UDTs sind VFP-Klassen, die von FoxAgentTool erben und Parameter sowie Ausfuhrungslogik offenlegen.

UDT-Beispiel

* GetSaldoTool.prg - Coloca este archivo en tu carpeta Tools\

DEFINE CLASS GetSaldoTool AS FoxAgentTool

  ToolName = "get_saldo"
  ToolDescription = "Obtiene el saldo de un cliente por su codigo"

  FUNCTION DefineParameters()
    THIS.AddParam("clienteCode", "number", "Codigo del cliente", .T.)
  ENDFUNC

  FUNCTION Execute(toContext)
    LOCAL lnCode, lcResult
    lnCode = THIS.GetParam("clienteCode")
    
    * Tu logica de negocio aqui
    lcResult = "Cliente " + TRANSFORM(lnCode) + ": $1500.00"
    
    RETURN THIS.Ok(lcResult)
  ENDFUNC

ENDDEFINE

Unterstutzte Parametertypen

Beim Definieren von Parametern mit AddParam() konnen Sie die folgenden Typen verwenden:

Typ Beschreibung Beispiel
"string" Text beliebiger Lange THIS.AddParam("nombre", "string", "Nombre del cliente", .T.)
"number" Ganze oder Dezimalzahl THIS.AddParam("cantidad", "number", "Cantidad", .T.)
"boolean" Logischer Wert (.T. oder .F.) THIS.AddParam("activo", "boolean", "Esta activo?", .F.)
"date" Datum (Format JJJJ-MM-TT) THIS.AddParam("fecha", "date", "Fecha de inicio", .F.)
"object" Komplexes JSON-Objekt THIS.AddParam("filtro", "object", "Filtros avanzados", .F.)

Der vierte Parameter von AddParam() gibt an, ob der Parameter erforderlich (.T.) oder optional (.F.) ist.

Beispiel mit mehreren Parametern

* SearchClientsTool.prg

DEFINE CLASS SearchClientsTool AS FoxAgentTool

  ToolName = "search_clients"
  ToolDescription = "Busca clientes por nombre, codigo postal o saldo minimo"

  FUNCTION DefineParameters()
    THIS.AddParam("searchText", "string", "Texto a buscar en nombre o codigo", .T.)
    THIS.AddParam("postalCode", "string", "Filtrar por codigo postal", .F.)
    THIS.AddParam("minBalance", "number", "Saldo minimo requerido", .F.)
    THIS.AddParam("activeOnly", "boolean", "Solo clientes activos", .F.)
  ENDFUNC

  FUNCTION Execute(toContext)
    LOCAL lcSearch, lcPostal, lnMinBal, llActive
    LOCAL lcQuery, lcResult
    
    lcSearch  = THIS.GetParam("searchText")
    lcPostal  = THIS.GetParam("postalCode")
    lnMinBal  = THIS.GetParam("minBalance")
    llActive  = THIS.GetParam("activeOnly")
    
    * Construir consulta dinamica
    lcQuery = "SELECT * FROM CLIENTES WHERE "
    lcQuery = lcQuery + "(cNombre LIKE '%" + lcSearch + "%' OR cCodigo = '" + lcSearch + "')"
    
    IF !EMPTY(lcPostal)
      lcQuery = lcQuery + " AND cCodPost = '" + lcPostal + "'"
    ENDIF
    
    IF lnMinBal > 0
      lcQuery = lcQuery + " AND nSaldo >= " + TRANSFORM(lnMinBal)
    ENDIF
    
    IF llActive
      lcQuery = lcQuery + " AND lActivo = .T."
    ENDIF
    
    * Ejecutar y retornar resultados
    &lcQuery INTO CURSOR curResult
    
    SELECT * FROM curResult INTO ARRAY laResult
    lcResult = TRANSFORM(ALEN(laResult,1)) + " clientes encontrados"
    
    RETURN THIS.Ok(lcResult)
  ENDFUNC

ENDDEFINE

Automatische Erkennung

UDTs werden automatisch aus dem mit SetToolsFolder() konfigurierten Ordner geladen. Sie mussen nur Ihre .prg-Dateien in diesem Ordner ablegen und FoxAgent wird sie beim Verbinden erkennen.

LOCAL loBridge
loBridge = CREATEOBJECT("FoxAgent.Bridge")
loBridge.SetInstance(_VFP)
loBridge.SetToolsFolder("C:\MiProyecto\Tools")  && Scan automatico
loBridge.Connect("mi-app-001", "Mi App", 3)
SDK enthalten Der FoxAgent-Installer enthalt die Basisklasse FoxAgentTool.prg und eine Vorlage MyToolTemplate.prg im SDK-Ordner. Kopieren Sie sie als Ausgangspunkt in Ihr Projekt.

Rollensystem

FoxAgent hat 4 Berechtigungsstufen, die steuern, welche Tools Ihr KI-Agent verwenden kann:

Stufe Name Zugriff
0 Observer Nur Lesen: Instanzen auflisten, Variablen, Cursor, Formulare anzeigen
1 Operator Lesen + Schreiben: set_variable, exec_command, UDTs
2 Developer Operator + get_call_stack, get_object_members, reload_procedure
3 Admin Developer + close_cursors, execute_tool, build_project

Die Rolle wird beim Verbinden mit Connect(instanceId, displayName, role) festgelegt und kann mit set_role dynamisch geandert werden.

Lizenz

FoxAgent verwendet validierte Lizenzen. Platzieren Sie die Datei foxagent.lic neben der Broker-Ausfuhrungsdatei:

# Lizenzpfad
C:\Program Files\FoxAgent\foxagent.lic

# Ohne Lizenz startet der Broker im Evaluierungsmodus
Evaluierungsmodus Ohne Lizenzdatei startet der Broker normal im Evaluierungsmodus. Die Lizenz wird nur fur den Produktionseinsatz benotigt.

Integrierte Tools

FoxAgent enthalt 33 integrierte Tools, nach Stufe organisiert:

Inspektion (Stufe 0)

  • list_instances — Verbundene VFP-Instanzen anzeigen
  • get_variables — Offentliche Variablen lesen
  • get_cursors — Geoffnete Cursor anzeigen
  • get_cursor_data — Cursor-Zeilen lesen
  • get_active_form — Aktives Formular
  • get_form_controls — Formular-Steuerelemente
  • take_screenshot — Bildschirmfoto
  • eval_expression — VFP-Ausdruck auswerten

Ausfuhrung (Stufe 1)

  • set_variable — Variable zuweisen
  • exec_command — VFP-Befehl ausfuhren
  • set_control_value — Steuerelementwert andern
  • refresh_form — Formular aktualisieren

Entwicklung (Stufe 2)

  • get_call_stack — Aufrufliste
  • get_object_members — Objektmitglieder
  • reload_procedure — PRG neu laden
  • run_report — Bericht ausfuhren
  • get_project_structure — Projektstruktur
  • get_source_file — Quellcode
  • build_project — Projekt kompilieren

Admin (Stufe 3)

  • close_cursors — Cursor schliessen
  • execute_tool — UDT ausfuhren
  • get_tools — Tool-Liste