End-to-end chat loop (code)
The same flow as examples/chat_with_memory.py: retrieve, answer, then write
back new facts. The live demo above executes an equivalent loop using the real retrieval logic.
from openai import OpenAI
from recollect import Memory
memory = Memory()
client = OpenAI()
user_id = "demo_user"
def reply(message: str) -> str:
retrieved = memory.search(message, filters={"user_id": user_id}, top_k=5)
memories = "\n".join(f"- {r['memory']}" for r in retrieved["results"])
system = f"You are helpful. User memories:\n{memories or '- (none)'}"
answer = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": system},
{"role": "user", "content": message},
],
).choices[0].message.content
memory.add(
[{"role": "user", "content": message},
{"role": "assistant", "content": answer}],
user_id=user_id,
)
return answer