File size: 2,185 Bytes
d601f7c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | // Strumenti di programmazione: Neuronal legge, scrive ed esegue codice dentro la cartella di lavoro.
// Il modello li chiama nel formato che conosce: <tool_call>{"name": ..., "arguments": {...}}</tool_call>.
#pragma once
#include <stdbool.h>
#include <stddef.h>
typedef struct {
char name[48];
char *args; // oggetto JSON degli argomenti (malloc)
bool bad; // JSON illeggibile: si risponde con l'errore
} ToolCall;
// dir: cartella di lavoro (creata se manca). Tutti i percorsi degli strumenti sono relativi a questa.
void tools_init(const char *dir);
void tools_log_path(const char *path); // dove registrare le chiamate (nella cartella dello stato)
const char *tools_workspace(void); // percorso assoluto
// Istruzioni e firme degli strumenti da aggiungere al prompt di sistema.
const char *tools_prompt(void);
// Chiamate presenti nel testo (fino a max). Ritorna quante; ogni args va liberato con tools_free.
int tools_parse(const char *text, ToolCall *out, int max);
void tools_free(ToolCall *c, int n);
// Esegue una chiamata. Ritorna il risultato per il modello (malloc); ok = riuscita.
char *tools_run(const ToolCall *c, bool *ok);
// Istruzioni per strumenti di programmazione (code) più altri definiti dal chiamante. Da liberare.
char *tools_prompt_build(bool code, const char *intro, const char *funcs);
// File binario della cartella di lavoro, per intero (malloc). NULL con err se manca o supera max byte.
unsigned char *tools_read_binary(const char *rel, size_t max, size_t *len, const char **err, char *clean, size_t clean_cap);
// Scrive un file (anche binario) nella cartella di lavoro. false con err se il percorso non vale o la scrittura fallisce.
bool tools_write_binary(const char *rel, const void *data, size_t n, const char **err);
// Internet: tools_web_init va chiamata all'avvio (cerca mind/web_tool.py e Python a partire dalla cartella corrente).
void tools_web_init(void);
bool tools_web_available(void);
// op "cerca" (arg = domanda, extra = numero di risultati) o "leggi" (arg = indirizzo, extra = caratteri). Da liberare.
char *tools_web(const char *op, const char *arg, int extra, bool *ok);
|