- Remove unused context_build_messages() (superseded by direct cJSON in agent_loop) - Remove unused llm_chat() and its helper extract_text_* functions (superseded by llm_chat_tools) - Remove ota_manager.c from build (never called) - Remove config_screen.c stub from build (no-op module) - Remove unused PWR_KEY_State, Button_GPIO_Get_Level; drop config_screen dependency from button_driver - Fix incorrect type cast in tool_get_time.c (char[64] cast to char**) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
62 lines
1.8 KiB
C
62 lines
1.8 KiB
C
#pragma once
|
|
|
|
#include "esp_err.h"
|
|
#include "cJSON.h"
|
|
#include <stddef.h>
|
|
#include <stdbool.h>
|
|
|
|
#include "mimi_config.h"
|
|
|
|
/**
|
|
* Initialize the LLM proxy. Reads API key and model from build-time secrets, then NVS.
|
|
*/
|
|
esp_err_t llm_proxy_init(void);
|
|
|
|
/**
|
|
* Save the LLM API key to NVS.
|
|
*/
|
|
esp_err_t llm_set_api_key(const char *api_key);
|
|
|
|
/**
|
|
* Save the LLM provider to NVS. (e.g. "anthropic", "openai")
|
|
*/
|
|
esp_err_t llm_set_provider(const char *provider);
|
|
|
|
/**
|
|
* Save the model identifier to NVS.
|
|
*/
|
|
esp_err_t llm_set_model(const char *model);
|
|
|
|
/* ── Tool Use Support ──────────────────────────────────────────── */
|
|
|
|
typedef struct {
|
|
char id[64]; /* "toolu_xxx" */
|
|
char name[32]; /* "web_search" */
|
|
char *input; /* heap-allocated JSON string */
|
|
size_t input_len;
|
|
} llm_tool_call_t;
|
|
|
|
typedef struct {
|
|
char *text; /* accumulated text blocks */
|
|
size_t text_len;
|
|
llm_tool_call_t calls[MIMI_MAX_TOOL_CALLS];
|
|
int call_count;
|
|
bool tool_use; /* stop_reason == "tool_use" */
|
|
} llm_response_t;
|
|
|
|
void llm_response_free(llm_response_t *resp);
|
|
|
|
/**
|
|
* Send a chat completion request with tools to the configured LLM API (non-streaming).
|
|
*
|
|
* @param system_prompt System prompt string
|
|
* @param messages cJSON array of messages (caller owns)
|
|
* @param tools_json Pre-built JSON string of tools array, or NULL for no tools
|
|
* @param resp Output: structured response with text and tool calls
|
|
* @return ESP_OK on success
|
|
*/
|
|
esp_err_t llm_chat_tools(const char *system_prompt,
|
|
cJSON *messages,
|
|
const char *tools_json,
|
|
llm_response_t *resp);
|