knowledge/context_injection.cpp¶
Prompt augmentation with Grokipedia facts. More...
Namespaces¶
| Name |
|---|
| sgns |
| sgns::neoswarm |
| sgns::neoswarm::knowledge |
Detailed Description¶
Prompt augmentation with Grokipedia facts.
Date: 2026-05-06
Source code¶
#include "context_injection.hpp"
namespace sgns::neoswarm::knowledge
{
ContextInjection::ContextInjection()
: m_cfg( {} )
{
}
ContextInjection::ContextInjection( Config cfg )
: m_cfg( std::move( cfg ) )
{
}
size_t ContextInjection::EstimateTokens( const std::string& text )
{
return text.size() / 4;
}
std::string ContextInjection::Inject( const std::string& prompt, const std::vector<KnowledgeFact>& facts ) const
{
if ( facts.empty() )
{
return prompt;
}
std::string context;
size_t used_tokens = 0;
for ( const auto& fact : facts )
{
std::string entry;
if ( m_cfg.add_source_tags_ )
{
entry = "[GROKIPEDIA: " + fact.m_source + "] " + fact.m_content + "\n";
}
else
{
entry = fact.m_content + "\n";
}
size_t entry_tokens = EstimateTokens( entry );
if ( used_tokens + entry_tokens > m_cfg.max_token_budget_ )
{
break;
}
context += entry;
used_tokens += entry_tokens;
}
if ( context.empty() )
{
return prompt;
}
return "Context from Grokipedia:\n" + context + "\n" + prompt;
}
} // namespace sgns::neoswarm::knowledge
Updated on 2026-07-25 at 22:56:57 +0000