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) 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 Integrierte Tools
FoxAgent enthalt 33 integrierte Tools, nach Stufe organisiert:
Inspektion (Stufe 0)
list_instances— Verbundene VFP-Instanzen anzeigenget_variables— Offentliche Variablen lesenget_cursors— Geoffnete Cursor anzeigenget_cursor_data— Cursor-Zeilen lesenget_active_form— Aktives Formularget_form_controls— Formular-Steuerelementetake_screenshot— Bildschirmfotoeval_expression— VFP-Ausdruck auswerten
Ausfuhrung (Stufe 1)
set_variable— Variable zuweisenexec_command— VFP-Befehl ausfuhrenset_control_value— Steuerelementwert andernrefresh_form— Formular aktualisieren
Entwicklung (Stufe 2)
get_call_stack— Aufruflisteget_object_members— Objektmitgliederreload_procedure— PRG neu ladenrun_report— Bericht ausfuhrenget_project_structure— Projektstrukturget_source_file— Quellcodebuild_project— Projekt kompilieren
Admin (Stufe 3)
close_cursors— Cursor schliessenexecute_tool— UDT ausfuhrenget_tools— Tool-Liste