47 lines
1.6 KiB
C
47 lines
1.6 KiB
C
#ifndef DIDACTYL_PROMPT_TEMPLATE_H
|
|
#define DIDACTYL_PROMPT_TEMPLATE_H
|
|
|
|
#include "cjson/cJSON.h"
|
|
#include "tools/tools.h"
|
|
|
|
#define PROMPT_TEMPLATE_MAX_SECTIONS 32
|
|
#define PROMPT_TEMPLATE_MAX_NAME_LEN 64
|
|
#define PROMPT_TEMPLATE_MAX_ROLE_LEN 16
|
|
#define PROMPT_TEMPLATE_MARKER "---template---"
|
|
|
|
typedef struct {
|
|
char name[PROMPT_TEMPLATE_MAX_NAME_LEN];
|
|
char role[PROMPT_TEMPLATE_MAX_ROLE_LEN];
|
|
char* content_template;
|
|
char* tool_name;
|
|
char* tool_args;
|
|
char* result_field;
|
|
int limit;
|
|
int skip_if_empty;
|
|
char* provider_name;
|
|
char* provider_content_template;
|
|
} prompt_template_section_t;
|
|
|
|
typedef struct {
|
|
char* personality;
|
|
prompt_template_section_t sections[PROMPT_TEMPLATE_MAX_SECTIONS];
|
|
int section_count;
|
|
} prompt_template_t;
|
|
|
|
typedef void (*prompt_template_emit_hook_fn)(const char* section_name,
|
|
int message_index,
|
|
void* user_data);
|
|
|
|
int prompt_template_parse(const char* skill_content, prompt_template_t* out_template);
|
|
|
|
cJSON* prompt_template_build_messages(const prompt_template_t* tmpl,
|
|
const char* provider_name,
|
|
tools_context_t* tools_ctx,
|
|
cJSON* dm_history_messages,
|
|
int dm_history_default_limit,
|
|
prompt_template_emit_hook_fn emit_hook,
|
|
void* emit_hook_user_data);
|
|
|
|
void prompt_template_free(prompt_template_t* tmpl);
|
|
|
|
#endif |