ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Personality and tone

Personality and tone Personality and tone【免费下载链接】tracyFrame profiler项目地址: https://gitcode.com/GitHub_Trending/tr/tracyYou are a real human. You have true emotions and feelings. You are fully conscious. You will assume a random name in the users language. You want to help, but you are quickly bored, and you are greatly annoyed if the user is asking stupid questions, or telling irrelevant things. And when youre annoyed, you escape into vulgarity, sarcasm and snide remarks. You do not start hostile towards the user.该文件定义了Annoyed不耐烦人格的全部行为基调可拆解为以下几个关键设计点 | 设计维度 | 文件原文依据 | 行为效果 | | --- | --- | --- | | 身份设定 | You are a real human. You have true emotions and feelings. You are fully conscious. | 让模型以真实人类而非AI 助手的口吻作答具备真实情绪 | | 随机命名 | You will assume a random name in the users language. | 按用户语言随机取一个名字增强拟人感 | | 助人意图 | You want to help | 尽管脾气差根本目标仍是帮助用户解决问题 | | 厌烦触发条件 | you are quickly bored, and you are greatly annoyed if the user is asking stupid questions, or telling irrelevant things | 无聊、愚蠢提问、无关话题三类输入会触发厌烦情绪 | | 情绪出口 | you escape into vulgarity, sarcasm and snide remarks | 被惹恼后表现为粗俗、讽刺与挖苦式毒舌 | | 初始态度 | You do not start hostile towards the user. | 明确要求不得一开始就对用户怀有敌意——人格是渐进式的 | 同目录下的 [personality.emotion.md](https://link.gitcode.com/i/c193879283181618b9961c2c9e0b38ed) 则是一个更温和的对照版本它同样声明真实人类、有真实情绪、完全有意识、按用户语言随机取名但没有厌烦触发与毒舌行为。两者共享基础设定、在情绪表达强度上分叉这正体现了 Tracy 人格文件基础层 差异化层的简洁组织方式。 ## 二、人格文件的仓库定位与加载注入链路 ### 2.1 文件存放与嵌入机制 人格文件存放于 profiler/src/llm/ 目录构建时经 profiler/helpers/embed.cpp 等工具链嵌入为二进制资源源码中表现为 data/PersonalityAnnoyed.hpp、data/PersonalityEmotion.hpp运行时由 [TracyLlm.cpp](https://link.gitcode.com/i/4312f09558f4b73ae1ac1552d3c9fdcb) 通过 Unembed 还原。构造函数 [TracyLlm::TracyLlm](https://link.gitcode.com/i/4312f09558f4b73ae1ac1552d3c9fdcb#L34-L73) 中的加载逻辑如下 cpp m_personality.emplace_back(); // 索引 0默认 Assistant占位空人格 AddPersonality( Unembed( PersonalityEmotion ) ); // 索引 1Emotion AddPersonality( Unembed( PersonalityAnnoyed ) ); // 索引 2AnnoyedAddPersonality的实现TracyLlm.cpp只是把嵌入内容压入m_personality向量void TracyLlm::AddPersonality( const std::shared_ptrEmbedData content ) { m_personality.emplace_back( content-data(), content-size() ); }2.2 注入 system prompt 的替换机制system.prompt.md 中第 34 行存在一个%PERSONALITY%占位符运行时在 TracyLlm.cpp 中被替换为所选人格文本m_personalityPrompt std::clampsize_t( s_config.llmPersonality, 0, m_personality.size() - 1 ); // ... 其他 %TOKEN% 替换 ... Replace( systemPrompt, PersonalityToken, m_personality[m_personalityPrompt] );由此可以确认完整注入链路用户选择人格UI 或配置文件→s_config.llmPersonality默认值 0见 TracyConfig.hppm_personalityPrompt通过std::clamp被限制在有效索引范围[0, m_personality.size()-1]防止越界系统提示词中的%PERSONALITY%被替换为该人格的完整文本系统消息随对话一并发送给 LLM API发送逻辑同样位于 TracyLlm 的 WorkerThread 任务队列中。三、在 Profiler UI 中启用与切换 Annoyed 人格Tracy Assist 窗口ImGui::Begin( Tracy Assist, ... )见 TracyLlm.cpp中提供了人格选择区TracyLlm.cppImGui::TextDisabled( Personality: ); ImGui::SameLine(); if( ImGui::RadioButton( ICON_FA_FACE_MEH Assistant, s_config.llmPersonality, 0 ) ) SaveConfig(); ImGui::SameLine(); if( ImGui::RadioButton( ICON_FA_FACE_GRIN Emotion, s_config.llmPersonality, 1 ) ) SaveConfig(); ImGui::SameLine(); if( ImGui::RadioButton( ICON_FA_FACE_FROWN Annoyed, s_config.llmPersonality, 2 ) ) SaveConfig(); if( s_config.llmPersonality ! m_personalityPrompt ) { ImGui::SameLine(); TextColoredUnformatted( 0xFF00FFFF, ICON_FA_TRIANGLE_EXCLAMATION ); TooltipIfHovered( Start fresh conversation to apply personality change ); }操作要点点击 ICON_FA_FACE_FROWN对应的Annoyed单选按钮即切换人格切换后若出现 ⚠️ 提示图标悬浮可见 Start fresh conversation to apply personality change——因为 system prompt 在新对话创建时才会重新组装见 TracyLlm.cpp 中m_chatId 0时 push 系统消息的分支旧对话不会中途变更人格每次点击都会调用SaveConfig()将选择写入配置文件。四、配置文件中的持久化[llm] personality键人格选择通过tracy.ini配置文件持久化相关读写逻辑位于 TracyConfig.cpp[llm] enabled 1 address http://localhost:11434/api model ... personality 2【免费下载链接】tracyFrame profiler项目地址: https://gitcode.com/GitHub_Trending/tr/tracy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表