AgentObject ya realiza la llamada al modelo
Hasta ahora el control
AgentObject no enviaba ninguna peticion.
Ask guardaba el prompt, leia un
LastReply que nadie escribia nunca y devolvia la cadena vacia. Como
onResponse solo se dispara con una respuesta no vacia, tampoco se disparaba: el formulario se quedaba en "asking..." para siempre, sin error y sin traza.
Que se corrigio
- Ask realiza la peticion y devuelve la respuesta. Es sincrono: el metodo documentado es Ask(prompt) devolviendo String y necesita la respuesta para devolverla. El interprete corre en su propio hilo, asi que el formulario sigue pintando mientras espera.
- Tres protocolos: OpenAI-compatible (/v1/chat/completions), Ollama nativo (/api/chat) y Anthropic (/v1/messages). AgentAPI elige; la ruta de la URL decide en caso de duda, porque Ollama sirve ambas formas.
- Cinco propiedades que no llegaban a ninguna parte ahora llegan a la peticion: AgentAPIKey, AgentAPI, AgentEndpoint, Temperature y MaximumTokens.
- Los eventos en cola nunca se despachaban. Una palabra COBOL llega al interprete en mayusculas, asi que Agent-Helper llegaba como AGENT-HELPER, mientras el bucle de eventos generado compara con WHEN "Agent-Helper". El EVALUATE no coincidia nunca. Afectaba a onResponse, onError, onComplete, onCancelled y onTimeout de todos los controles asincronos, y tambien a las aplicaciones ya compiladas.
- Verbose, una propiedad nueva del AgentObject, imprime la URL, las cabeceras, el cuerpo enviado, el estado HTTP y la respuesta en bruto, sin recortar. Esta desactivada por omision.
Ejemplo
Código:
PROCEDURE DIVISION.
MOVE "asking..." TO Lbl-State::Caption.
Agent-Helper::Ask(Txt-Question::Text).
*> y en el manejador Agent-Helper::onResponse, que ahora SI se ejecuta:
MOVE Agent-Helper::LastReply TO Txt-Reply::Text.
MOVE "answered" TO Lbl-State::Caption.
Si la llamada falla,
LastError recibe el motivo,
LastReply se
vacia (una respuesta vieja tras un fallo es como un manejador informa de un exito que no tuvo) y se dispara
onError.
Otras correcciones de este lote
- Beautify reformateaba el interior de los literales de bloque, cambiando el valor que el programa muestra. Ahora los deja intactos, vallas incluidas.
- ComboBox: BorderStyle se pintaba pero no se podia cambiar; faltaba la fila en el inspector.
- El modal del Editor de eventos COBOL se agrandaba solo al ajustar su anchura.
- La carpeta de destino del FileDropZone ya tiene selector de carpeta y un boton para borrarla.
El ejemplo PowerDemo3 incluye el formulario AgentObject con los seis botones de idioma.
Documentacion:
PowerRustCOBOL/docs/developers-guide-en.md at main · CloudLandBeta/PowerRustCOBOL · GitHub
Anthropic Claude Codex Agent