diff --git a/profiler/src/profiler/TracyLlm.cpp b/profiler/src/profiler/TracyLlm.cpp index 2cc1c9cf..cf30d960 100644 --- a/profiler/src/profiler/TracyLlm.cpp +++ b/profiler/src/profiler/TracyLlm.cpp @@ -50,10 +50,7 @@ TracyLlm::TracyLlm( class Worker& worker ) m_tools = std::make_unique( worker ); m_busy = true; - m_jobs.emplace_back( WorkItem { - .task = Task::Connect, - .callback = [this] { UpdateModels(); } - } ); + QueueConnect(); m_thread = std::thread( [this] { Worker(); } ); } @@ -151,11 +148,7 @@ void TracyLlm::Draw() if( ImGui::Button( ICON_FA_ARROWS_ROTATE " Reconnect" ) ) { if( m_responding ) m_stop = true; - m_jobs.emplace_back( WorkItem { - .task = Task::Connect, - .callback = [this] { UpdateModels(); } - } ); - m_cv.notify_all(); + QueueConnect(); } ImGui::SameLine(); @@ -198,11 +191,7 @@ void TracyLlm::Draw() { s_config.llmAddress = m_apiInput; SaveConfig(); - m_jobs.emplace_back( WorkItem { - .task = Task::Connect, - .callback = [this] { UpdateModels(); } - } ); - m_cv.notify_all(); + QueueConnect(); } const auto& models = m_api->GetModels(); @@ -461,11 +450,7 @@ void TracyLlm::Draw() { if( role == TracyLlmChat::TurnRole::Assistant || role == TracyLlmChat::TurnRole::AssistantDebug ) { - m_jobs.emplace_back( WorkItem { - .task = Task::SendMessage, - .callback = nullptr - } ); - m_cv.notify_all(); + QueueSendMessage(); } else if( role == TracyLlmChat::TurnRole::User || role == TracyLlmChat::TurnRole::UserDebug ) { @@ -560,11 +545,7 @@ void TracyLlm::Draw() *m_input = 0; m_responding = true; - m_jobs.emplace_back( WorkItem { - .task = Task::SendMessage, - .callback = nullptr - } ); - m_cv.notify_all(); + QueueSendMessage(); } else { @@ -672,6 +653,24 @@ void TracyLlm::ResetChat() AddMessage( std::move( systemPrompt ), "system" ); } +void TracyLlm::QueueConnect() +{ + m_jobs.emplace_back( WorkItem { + .task = Task::Connect, + .callback = [this] { UpdateModels(); } + } ); + m_cv.notify_all(); +} + +void TracyLlm::QueueSendMessage() +{ + m_jobs.emplace_back( WorkItem { + .task = Task::SendMessage, + .callback = nullptr + } ); + m_cv.notify_all(); +} + void TracyLlm::AddMessage( std::string&& str, const char* role ) { const auto tokens = m_api ? m_api->Tokenize( str, m_modelIdx ) : -1; @@ -887,11 +886,7 @@ bool TracyLlm::OnResponse( const nlohmann::json& json ) lock.lock(); AddMessage( std::move( output ), "user" ); } - m_jobs.emplace_back( WorkItem { - .task = Task::SendMessage, - .callback = nullptr - } ); - m_cv.notify_all(); + QueueSendMessage(); } } } diff --git a/profiler/src/profiler/TracyLlm.hpp b/profiler/src/profiler/TracyLlm.hpp index df1da3de..7a420305 100644 --- a/profiler/src/profiler/TracyLlm.hpp +++ b/profiler/src/profiler/TracyLlm.hpp @@ -52,6 +52,9 @@ private: void UpdateModels(); void ResetChat(); + void QueueConnect(); + void QueueSendMessage(); + void AddMessage( std::string&& str, const char* role ); void ManageContext(); void SendMessage( std::unique_lock& lock );