Fixing uuid issues
This commit is contained in:
parent
3d2587168a
commit
5779c9bcdf
@ -14,7 +14,7 @@ def create_table(db_path, vector_size):
|
||||
pyarrow.field('telegram_id', pyarrow.string(), nullable=True, metadata={'description': 'Telegram ID'}),
|
||||
pyarrow.field('telegram_username', pyarrow.string(), nullable=True, metadata={'description': 'Telegram username'}),
|
||||
pyarrow.field('xampp_username', pyarrow.string(), nullable=True, metadata={'description': 'XAMPP username'}),
|
||||
pyarrow.field('vector_fullname', pyarrow.list_(pyarrow.float32(), vector_size) metadata={'description': 'Vector data of fullname'}),
|
||||
pyarrow.field('vector_fullname', pyarrow.list_(pyarrow.float32(), vector_size), metadata={'description': 'Vector data of fullname'}),
|
||||
])
|
||||
db.create_table("knowledge_user", schema=schema_user)
|
||||
|
||||
@ -29,7 +29,7 @@ def create_table(db_path, vector_size):
|
||||
pyarrow.field('detail', pyarrow.string(), metadata={'description': 'Event detail'}),
|
||||
pyarrow.field('physical', pyarrow.string(), metadata={'description': 'Character physical state'}),
|
||||
pyarrow.field('emotional', pyarrow.string(), metadata={'description': 'Character emotional state'}),
|
||||
pyarrow.field('vector_context', pyarrow.list_(pyarrow.float32(), vector_size) metadata={'description': 'Vector data of combined data'}),
|
||||
pyarrow.field('vector_context', pyarrow.list_(pyarrow.float32(), vector_size), metadata={'description': 'Vector data of combined data'}),
|
||||
])
|
||||
db.create_table("knowledge_memories", schema=schema_memories)
|
||||
|
||||
@ -94,6 +94,11 @@ def create_table(db_path, vector_size):
|
||||
gc.collect()
|
||||
|
||||
|
||||
def _uuid(val):
|
||||
if isinstance(val, str):
|
||||
return uuid.UUID(val)
|
||||
return val
|
||||
|
||||
def embed_text(url, model, text):
|
||||
response = requests.post(url=url, json={"model": model, "input": text} )
|
||||
data = response.json()
|
||||
@ -105,7 +110,7 @@ def users_store(db_path, model_url, model_name, fullname, nickname, alias, perso
|
||||
table = db.open_table("knowledge_user")
|
||||
vector = embed_text(model_url, model_name, fullname)
|
||||
record = {
|
||||
"id": str(uuid.uuid4()),
|
||||
"id": uuid.uuid4(),
|
||||
"timestamp": datetime.now(),
|
||||
"fullname": fullname,
|
||||
"nickname": nickname,
|
||||
@ -132,7 +137,7 @@ def users_filter(db_path, query_name=None, unique_id=None, persona_keyword=None,
|
||||
table = db.open_table("knowledge_user")
|
||||
filters = []
|
||||
if user_id:
|
||||
filters.append(f"id = '{user_id}'")
|
||||
filters.append(f"id = X'{_uuid(user_id).hex}'")
|
||||
if unique_id:
|
||||
filters.append(f"(telegram_id = '{unique_id}' OR telegram_username = '{unique_id}' OR xampp_username = '{unique_id}')")
|
||||
if query_name:
|
||||
@ -156,7 +161,7 @@ def users_delete(db_path, user_id):
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_user")
|
||||
|
||||
table.delete(f"id = '{user_id}'")
|
||||
table.delete(f"id = X'{_uuid(user_id).hex}'")
|
||||
|
||||
del table
|
||||
del db
|
||||
@ -171,7 +176,7 @@ def users_update(db_path, model_url, model_name, user_id, **updates):
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_user")
|
||||
|
||||
current_record = table.search().where(f"id = '{user_id}'").to_list()
|
||||
current_record = table.search().where(f"id = X'{_uuid(user_id).hex}'").to_list()
|
||||
|
||||
if not current_record:
|
||||
return False
|
||||
@ -205,7 +210,7 @@ def memories_store(db_path, model_url, model_name, character, user, relative_tim
|
||||
vector = embed_text(model_url, model_name, context_text)
|
||||
|
||||
record = {
|
||||
"id": str(uuid.uuid4()),
|
||||
"id": uuid.uuid4(),
|
||||
"timestamp": datetime.now(),
|
||||
"character": character,
|
||||
"user": user,
|
||||
@ -280,7 +285,7 @@ def memories_delete(db_path, memory_id):
|
||||
try:
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_memories")
|
||||
table.delete(f"id = '{memory_id}'")
|
||||
table.delete(f"id = X'{_uuid(memory_id).hex}'")
|
||||
del table
|
||||
del db
|
||||
gc.collect()
|
||||
@ -293,7 +298,7 @@ def memories_update(db_path, model_url, model_name, memory_id, **updates):
|
||||
try:
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_memories")
|
||||
current_record = table.search().where(f"id = '{memory_id}'").to_list()
|
||||
current_record = table.search().where(f"id = X'{_uuid(memory_id).hex}'").to_list()
|
||||
if not current_record:
|
||||
return False
|
||||
|
||||
@ -325,7 +330,7 @@ def objects_store(db_path, model_url, model_name, keyword, when, where, name, de
|
||||
context_text = f"Keyword: {keyword}\nWhen: {when}\nName: {name}"
|
||||
vector = embed_text(model_url, model_name, context_text)
|
||||
record = {
|
||||
"id": str(uuid.uuid4()),
|
||||
"id": uuid.uuid4(),
|
||||
"timestamp": datetime.now(),
|
||||
"keyword": keyword, "when": when, "where": where, "name": name, "description": description, "shape": shape, "usage": usage,
|
||||
"vector_context": vector
|
||||
@ -340,7 +345,7 @@ def objects_filter(db_path, keyword=None, object_id=None):
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_object")
|
||||
query = ""
|
||||
if object_id: query = f"id = '{object_id}'"
|
||||
if object_id: query = f"id = X'{_uuid(object_id).hex}'"
|
||||
elif keyword: query = f"keyword = '{keyword}'"
|
||||
results = table.search().where(query).to_list() if query else table.to_list()
|
||||
del table; del db; gc.collect()
|
||||
@ -351,7 +356,7 @@ def objects_update(db_path, model_url, model_name, object_id, **updates):
|
||||
try:
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_object")
|
||||
current = table.search().where(f"id = '{object_id}'").to_list()
|
||||
current = table.search().where(f"id = X'{_uuid(object_id).hex}'").to_list()
|
||||
if not current: return False
|
||||
record = current[0]
|
||||
needs_reembed = any(f in updates for f in ['keyword', 'when', 'name'])
|
||||
@ -368,7 +373,7 @@ def objects_delete(db_path, object_id):
|
||||
try:
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_object")
|
||||
table.delete(f"id = '{object_id}'")
|
||||
table.delete(f"id = X'{_uuid(object_id).hex}'")
|
||||
del table; del db; gc.collect()
|
||||
return True
|
||||
except Exception as e: return False
|
||||
@ -380,7 +385,7 @@ def outfits_store(db_path, model_url, model_name, keyword, when, outfit):
|
||||
context_text = f"Keyword: {keyword}\nWhen: {when}"
|
||||
vector = embed_text(model_url, model_name, context_text)
|
||||
record = {
|
||||
"id": str(uuid.uuid4()),
|
||||
"id": uuid.uuid4(),
|
||||
"timestamp": datetime.now(),
|
||||
"keyword": keyword, "when": when, "outfit": outfit,
|
||||
"vector_context": vector
|
||||
@ -395,7 +400,7 @@ def outfits_filter(db_path, keyword=None, outfit_id=None):
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_outfit_set")
|
||||
query = ""
|
||||
if outfit_id: query = f"id = '{outfit_id}'"
|
||||
if outfit_id: query = f"id = X'{_uuid(outfit_id).hex}'"
|
||||
elif keyword: query = f"keyword = '{keyword}'"
|
||||
results = table.search().where(query).to_list() if query else table.to_list()
|
||||
del table; del db; gc.collect()
|
||||
@ -406,7 +411,7 @@ def outfits_update(db_path, model_url, model_name, outfit_id, **updates):
|
||||
try:
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_outfit_set")
|
||||
current = table.search().where(f"id = '{outfit_id}'").to_list()
|
||||
current = table.search().where(f"id = X'{_uuid(outfit_id).hex}'").to_list()
|
||||
if not current: return False
|
||||
record = current[0]
|
||||
needs_reembed = any(f in updates for f in ['keyword', 'when'])
|
||||
@ -423,7 +428,7 @@ def outfits_delete(db_path, outfit_id):
|
||||
try:
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_outfit_set")
|
||||
table.delete(f"id = '{outfit_id}'")
|
||||
table.delete(f"id = X'{_uuid(outfit_id).hex}'")
|
||||
del table; del db; gc.collect()
|
||||
return True
|
||||
except Exception as e: return False
|
||||
@ -435,7 +440,7 @@ def todos_store(db_path, model_url, model_name, keyword, when, do):
|
||||
context_text = f"Keyword: {keyword}\nWhen: {when}"
|
||||
vector = embed_text(model_url, model_name, context_text)
|
||||
record = {
|
||||
"id": str(uuid.uuid4()),
|
||||
"id": uuid.uuid4(),
|
||||
"timestamp": datetime.now(),
|
||||
"keyword": keyword, "when": when, "do": do,
|
||||
"vector_context": vector
|
||||
@ -450,7 +455,7 @@ def todos_filter(db_path, keyword=None, todo_id=None):
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_todo")
|
||||
query = ""
|
||||
if todo_id: query = f"id = '{todo_id}'"
|
||||
if todo_id: query = f"id = X'{_uuid(todo_id).hex}'"
|
||||
elif keyword: query = f"keyword = '{keyword}'"
|
||||
results = table.search().where(query).to_list() if query else table.to_list()
|
||||
del table; del db; gc.collect()
|
||||
@ -461,7 +466,7 @@ def todos_update(db_path, model_url, model_name, todo_id, **updates):
|
||||
try:
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_todo")
|
||||
current = table.search().where(f"id = '{todo_id}'").to_list()
|
||||
current = table.search().where(f"id = X'{_uuid(todo_id).hex}'").to_list()
|
||||
if not current: return False
|
||||
record = current[0]
|
||||
needs_reembed = any(f in updates for f in ['keyword', 'when'])
|
||||
@ -478,7 +483,7 @@ def todos_delete(db_path, todo_id):
|
||||
try:
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_todo")
|
||||
table.delete(f"id = '{todo_id}'")
|
||||
table.delete(f"id = X'{_uuid(todo_id).hex}'")
|
||||
del table; del db; gc.collect()
|
||||
return True
|
||||
except Exception as e: return False
|
||||
@ -490,7 +495,7 @@ def worlds_store(db_path, model_url, model_name, category, location, description
|
||||
context_text = f"Category: {category}\nLocation: {location}\nDescription: {description}"
|
||||
vector = embed_text(model_url, model_name, context_text)
|
||||
record = {
|
||||
"id": str(uuid.uuid4()),
|
||||
"id": uuid.uuid4(),
|
||||
"timestamp": datetime.now(),
|
||||
"category": category, "location": location, "description": description,
|
||||
"vector_context": vector
|
||||
@ -505,7 +510,7 @@ def worlds_filter(db_path, category=None, location=None, world_id=None):
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_world")
|
||||
filters = []
|
||||
if world_id: filters.append(f"id = '{world_id}'")
|
||||
if world_id: filters.append(f"id = X'{_uuid(world_id).hex}'")
|
||||
if category: filters.append(f"category = '{category}'")
|
||||
if location: filters.append(f"location = '{location}'")
|
||||
query = " AND ".join(filters)
|
||||
@ -518,7 +523,7 @@ def worlds_update(db_path, model_url, model_name, world_id, **updates):
|
||||
try:
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_world")
|
||||
current = table.search().where(f"id = '{world_id}'").to_list()
|
||||
current = table.search().where(f"id = X'{_uuid(world_id).hex}'").to_list()
|
||||
if not current: return False
|
||||
record = current[0]
|
||||
needs_reembed = any(f in updates for f in ['category', 'location', 'description'])
|
||||
@ -535,7 +540,7 @@ def worlds_delete(db_path, world_id):
|
||||
try:
|
||||
db = lancedb.connect(db_path)
|
||||
table = db.open_table("knowledge_world")
|
||||
table.delete(f"id = '{world_id}'")
|
||||
table.delete(f"id = X'{_uuid(world_id).hex}'")
|
||||
del table; del db; gc.collect()
|
||||
return True
|
||||
except Exception as e: return False
|
||||
|
||||
Loading…
Reference in New Issue
Block a user