feat: add salutation field to user profile

- Add salutation field to knowledge_user schema (after alias, nullable)
- Update users_store() to accept and store salutation
- Add salutation to users_store and users_update tool schemas
- Add salutation to users_filter output display
- Add Salutation to User Context in telegram and xmpp clients
This commit is contained in:
Dita Aji Pratama 2026-07-12 13:38:02 +07:00
parent 11d05a937e
commit 2c65c51ec9
4 changed files with 10 additions and 2 deletions

View File

@ -11,6 +11,7 @@ def _schema_user(vector_size):
pyarrow.field('fullname', pyarrow.string(), metadata={'description': 'Fullname'}),
pyarrow.field('nickname', pyarrow.string(), metadata={'description': 'Nickname'}),
pyarrow.field('alias', pyarrow.string(), nullable=True, metadata={'description': 'Another call name'}),
pyarrow.field('salutation', pyarrow.string(), nullable=True, metadata={'description': 'Salutation/greeting for the user'}),
pyarrow.field('persona', pyarrow.string(), nullable=True, metadata={'description': 'Persona'}),
pyarrow.field('telegram_id', pyarrow.string(), nullable=True, metadata={'description': 'Telegram ID'}),
pyarrow.field('telegram_username', pyarrow.string(), nullable=True, metadata={'description': 'Telegram username'}),
@ -129,7 +130,7 @@ def embed_text(url, model, text):
data = response.json()
return data["embeddings"][0]
def users_store(db_path, model_url, model_name, fullname, nickname, alias, persona, telegram_id, telegram_username, xampp_username):
def users_store(db_path, model_url, model_name, fullname, nickname, alias, salutation, persona, telegram_id, telegram_username, xampp_username):
try:
db = lancedb.connect(db_path)
table = db.open_table("knowledge_user")
@ -140,6 +141,7 @@ def users_store(db_path, model_url, model_name, fullname, nickname, alias, perso
"fullname": fullname,
"nickname": nickname,
"alias": alias,
"salutation": salutation,
"persona": persona,
"telegram_id": telegram_id,
"telegram_username": telegram_username,

View File

@ -202,6 +202,7 @@ class TelegramClient:
f'[User Context]\n'
f'Nama: {u["fullname"]} ({u["nickname"]})\n'
f'Alias: {u.get("alias", "-") or "-"}\n'
f'Salutation: {u.get("salutation", "-") or "-"}\n'
f'Persona: {u.get("persona", "-") or "-"}\n'
f'Telegram: {u.get("telegram_id", "-") or "-"} / @{u.get("telegram_username", "-") or "-"}\n'
f'XMPP: {u.get("xampp_username", "-") or "-"}\n'

View File

@ -306,6 +306,7 @@ class XMPPClient(ClientXMPP):
f'[User Context]\n'
f'Nama: {u["fullname"]} ({u["nickname"]})\n'
f'Alias: {u.get("alias", "-") or "-"}\n'
f'Salutation: {u.get("salutation", "-") or "-"}\n'
f'Persona: {u.get("persona", "-") or "-"}\n'
f'Telegram: {u.get("telegram_id", "-") or "-"} / @{u.get("telegram_username", "-") or "-"}\n'
f'XMPP: {u.get("xampp_username", "-") or "-"}\n'

View File

@ -19,6 +19,7 @@ schema_users_store = {
"fullname": {"type": "string", "description": "Full name of the user"},
"nickname": {"type": "string", "description": "Nickname of the user"},
"alias": {"type": "string", "description": "Alias of the user"},
"salutation": {"type": "string", "description": "How to address/greet the user (e.g., Mas, Mbak, Kak)"},
"persona": {"type": "string", "description": "Detailed persona or description of the user"},
"telegram_id": {"type": "string", "description": "Telegram user ID"},
"telegram_username": {"type": "string", "description": "Telegram username"},
@ -58,6 +59,7 @@ schema_users_update = {
"fullname": {"type": "string", "description": "Updated full name"},
"nickname": {"type": "string", "description": "Updated nickname"},
"alias": {"type": "string", "description": "Updated alias"},
"salutation": {"type": "string", "description": "Updated salutation"},
"persona": {"type": "string", "description": "Updated persona description"},
"telegram_id": {"type": "string", "description": "Updated telegram ID"},
"telegram_username": {"type": "string", "description": "Updated telegram username"},
@ -617,7 +619,7 @@ def memories_delete(memory_id):
except Exception as e:
return f"Error while deleting memory: {str(e)}"
def users_store(fullname, nickname, alias=None, persona=None, telegram_id=None, telegram_username=None, xampp_username=None):
def users_store(fullname, nickname, alias=None, salutation=None, persona=None, telegram_id=None, telegram_username=None, xampp_username=None):
try:
success = ragroleplay_lib.users_store(
config.ragroleplay_db_path,
@ -626,6 +628,7 @@ def users_store(fullname, nickname, alias=None, persona=None, telegram_id=None,
fullname,
nickname,
alias,
salutation,
persona,
telegram_id,
telegram_username,
@ -651,6 +654,7 @@ def users_filter(query_name=None, unique_id=None, persona_keyword=None, user_id=
f"User #{i}\n"
f"ID: {row['id']}\n"
f"Nama: {row['fullname']} ({row['nickname']})\n"
f"Salutation: {row.get('salutation', '-') or '-'}\n"
f"Persona: {row['persona']}\n"
)
output.append(user_info)