#pragma once #include #include namespace r1_voice { struct ChatMessage { std::string role; std::string content; }; struct LlmConfig { std::string url = "http://127.0.0.1:8080/v1/chat/completions"; std::string model = "local"; float temperature = 0.7f; int max_tokens = 256; std::string system_prompt = "You are R1, a humanoid robot conversational assistant. " "Talk naturally with the person in front of you. " "Keep answers reasonably short because they will be spoken aloud. " "Answer in the same language as the user. " "Do not use markdown unless necessary."; }; class LLM { public: explicit LLM(LlmConfig config); std::string chat( const std::string& user ); private: LlmConfig config_; std::vector history_; std::string escapeJson( const std::string& text ) const; std::string parseContent( const std::string& json ) const; std::string httpPost( const std::string& body ) const; }; } // namespace r1_voice