Csilk 0.2.1
A lightweight, high-performance C HTTP web framework
Loading...
Searching...
No Matches
ai.h
Go to the documentation of this file.
1
26#ifndef CSILK_AI_H
27#define CSILK_AI_H
28
29#include <stdbool.h>
30#include <stddef.h>
31#include <stdint.h>
32
36typedef struct {
37 uint64_t requests_total;
38 uint64_t tokens_total;
39 uint64_t prompt_tokens;
41 uint64_t errors_total;
44
50
57
62void csilk_ai_register_monitor(void* c);
63
65typedef struct csilk_ai_s csilk_ai_t;
66
68typedef struct {
69 const char* role;
70 const char* content;
72
76typedef void (*csilk_ai_stream_cb)(const char* chunk, void* user_data);
77
79typedef struct {
80 const char* name;
81 const char* description;
84
86typedef struct {
87 const char* type;
90
92typedef struct {
93 char* id;
94 char* name;
95 char* arguments;
97
119
132
142
144typedef void (*csilk_ai_chat_async_cb)(int status, csilk_ai_chat_response_t* res, void* user_data);
145
147typedef void (*csilk_ai_embeddings_async_cb)(int status,
149 void* user_data);
150
158typedef struct {
159 const char* name;
165 void* (*init)(const char* api_key, const char* base_url);
171 int (*chat)(void* state, const csilk_ai_chat_request_t* req, csilk_ai_chat_response_t* res);
179 int (*embeddings)(void* state,
180 const char* model,
181 const char** input,
182 size_t count,
186 void (*free)(void* state);
188
196
197/* --- Core API --- */
198
204csilk_ai_t* csilk_ai_new(const char* driver_name, const char* api_key, const char* base_url);
205
211int
212csilk_ai_chat(csilk_ai_t* ai, const csilk_ai_chat_request_t* req, csilk_ai_chat_response_t* res);
213
217void csilk_ai_chat_async(csilk_ai_t* ai,
218 const csilk_ai_chat_request_t* req,
220 void* user_data);
221
229int csilk_ai_embeddings(csilk_ai_t* ai,
230 const char* model,
231 const char** input,
232 size_t count,
234
236void csilk_ai_embeddings_async(csilk_ai_t* ai,
237 const char* model,
238 const char** input,
239 size_t count,
241 void* user_data);
242
244void csilk_ai_free(csilk_ai_t* ai);
245
248
251
255
256/* --- Context Helpers --- */
257
261csilk_ai_context_t* csilk_ai_context_new(size_t max_history);
262
265void csilk_ai_context_add(csilk_ai_context_t* ctx, const char* role, const char* content);
266
269
272
273#endif /* CSILK_AI_H */
Opaper AI engine handle wrapping a single driver backend. Each instance pairs a driver vtable with it...
Definition ai.c:154
int total_tokens
Definition ai.h:127
int csilk_ai_embeddings(csilk_ai_t *ai, const char *model, const char **input, size_t count, csilk_ai_embeddings_response_t *res)
Generate embeddings for the given input strings.
Definition ai.c:412
char * error_message
Definition ai.h:129
size_t capacity
Definition ai.h:193
csilk_ai_tool_function_t function
Definition ai.h:88
int timeout_ms
Definition ai.h:114
uint64_t completion_tokens
Definition ai.h:40
uint64_t requests_total
Definition ai.h:37
size_t tool_count
Definition ai.h:116
char * name
Definition ai.h:94
void csilk_ai_register_driver(const csilk_ai_driver_t *driver)
Register a new AI driver.
Definition ai.c:165
double temperature
Definition ai.h:103
double frequency_penalty
Definition ai.h:106
const char * description
Definition ai.h:81
uint64_t errors_total
Definition ai.h:41
uint64_t duration_us_total
Definition ai.h:42
double top_p
Definition ai.h:104
csilk_ai_context_t * csilk_ai_context_new(size_t max_history)
Initialize a new conversation context.
Definition ai.c:595
void csilk_ai_get_stats(csilk_ai_stats_t *stats)
Get current AI engine statistics.
Definition ai.c:96
bool stream
Definition ai.h:111
double presence_penalty
Definition ai.h:105
int total_tokens
Definition ai.h:139
const char ** stop
Definition ai.h:108
void csilk_ai_embeddings_response_free(csilk_ai_embeddings_response_t *res)
Free an embeddings response structure.
Definition ai.c:574
size_t dimension
Definition ai.h:136
const char * tool_choice
Definition ai.h:117
char * arguments
Definition ai.h:95
size_t tool_call_count
Definition ai.h:124
csilk_ai_t * csilk_ai_new(const char *driver_name, const char *api_key, const char *base_url)
Create a new AI instance with a specific driver.
Definition ai.c:204
const char * user
Definition ai.h:110
void csilk_ai_chat_response_free(csilk_ai_chat_response_t *res)
Free a chat response structure.
Definition ai.c:552
csilk_ai_tool_t * tools
Definition ai.h:115
char * raw_response
Definition ai.h:128
const char * role
Definition ai.h:69
size_t message_count
Definition ai.h:102
float * values
Definition ai.h:135
int prompt_tokens
Definition ai.h:138
size_t stop_count
Definition ai.h:109
const char * model
Definition ai.h:100
void(* csilk_ai_chat_async_cb)(int status, csilk_ai_chat_response_t *res, void *user_data)
Callback for asynchronous chat completion.
Definition ai.h:144
const char * content
Definition ai.h:70
csilk_ai_tool_call_t * tool_calls
Definition ai.h:123
char * content
Definition ai.h:122
const char * type
Definition ai.h:87
size_t count
Definition ai.h:137
char * error_message
Definition ai.h:140
const char * name
Definition ai.h:80
size_t max_history
Definition ai.h:194
void csilk_ai_register_monitor(void *c)
Register a WebSocket monitor for real-time AI events.
Definition ai.c:128
void(* csilk_ai_embeddings_async_cb)(int status, csilk_ai_embeddings_response_t *res, void *user_data)
Callback for asynchronous embeddings.
Definition ai.h:147
int prompt_tokens
Definition ai.h:125
csilk_ai_message_t * messages
Definition ai.h:191
void csilk_ai_context_clear(csilk_ai_context_t *ctx)
Clear all messages from the context.
Definition ai.c:658
uint64_t prompt_tokens
Definition ai.h:39
int csilk_ai_chat(csilk_ai_t *ai, const csilk_ai_chat_request_t *req, csilk_ai_chat_response_t *res)
Perform a chat completion.
Definition ai.c:256
csilk_ai_message_t * messages
Definition ai.h:101
void csilk_ai_free(csilk_ai_t *ai)
Free an AI handle.
Definition ai.c:537
void csilk_ai_context_add(csilk_ai_context_t *ctx, const char *role, const char *content)
Add a message to the context.
Definition ai.c:619
int completion_tokens
Definition ai.h:126
char * csilk_ai_stats_to_json(const csilk_ai_stats_t *stats)
Convert AI statistics to a JSON string.
Definition ai.c:110
uint64_t tokens_total
Definition ai.h:38
void * parameters_json
Definition ai.h:82
void csilk_ai_chat_async(csilk_ai_t *ai, const csilk_ai_chat_request_t *req, csilk_ai_chat_async_cb cb, void *user_data)
Perform an asynchronous chat completion.
Definition ai.c:371
void csilk_ai_embeddings_async(csilk_ai_t *ai, const char *model, const char **input, size_t count, csilk_ai_embeddings_async_cb cb, void *user_data)
Generate embeddings asynchronously.
Definition ai.c:502
csilk_ai_stream_cb on_chunk
Definition ai.h:112
void(* csilk_ai_stream_cb)(const char *chunk, void *user_data)
Callback for streaming mode.
Definition ai.h:76
void * user_data
Definition ai.h:113
void csilk_ai_context_free(csilk_ai_context_t *ctx)
Free a conversation context.
Definition ai.c:674
int max_tokens
Definition ai.h:107
size_t count
Definition ai.h:192
char * id
Definition ai.h:93
Request parameters for chat completion.
Definition ai.h:99
Response data from a chat completion.
Definition ai.h:121
Helper to manage conversation context and history.
Definition ai.h:190
Response data for embeddings.
Definition ai.h:134
A single message in a chat conversation.
Definition ai.h:68
AI Engine statistics.
Definition ai.h:36
a tool call requested by the model.
Definition ai.h:92
A function tool definition for the AI model.
Definition ai.h:79
A tool that can be called by the model.
Definition ai.h:86
Virtual function table implemented by each AI provider backend.
Definition ai.h:158
const char * name
Definition ai.h:159