|
6 | 6 | from llama_cpp_agent.chat_history.messages import Roles |
7 | 7 | from llama_cpp_agent.llm_agent import SystemPromptModule, SystemPromptModulePosition |
8 | 8 | from llama_cpp_agent.providers import LlamaCppServerProvider |
9 | | -from memory import output_settings, agent_core_memory, agent_retrieval_memory, agent_event_memory |
10 | | -from prompts import game_master_prompt, examples, memory_prompt |
| 9 | +from memory import output_settings, agent_core_memory, agent_retrieval_memory, agent_event_memory, update_memory_section |
| 10 | +from prompts import game_master_prompt, examples, memory_prompt, wrap_function_response_in_xml_tags_json_mode, generate_fake_write_message, generate_write_message_with_examples, wrap_player_message_in_xml_tags_json_mode |
11 | 11 |
|
12 | 12 | provider = LlamaCppServerProvider("http://localhost:8080") |
13 | 13 |
|
|
20 | 20 |
|
21 | 21 | settings = provider.get_provider_default_settings() |
22 | 22 | settings.n_predict = 1024 |
23 | | -settings.temperature = 0.65 |
24 | | -settings.top_k = 40 |
25 | | -settings.top_p = 0.85 |
| 23 | +settings.temperature = 0.35 |
| 24 | +settings.top_k = 0 |
| 25 | +settings.top_p = 0.5 |
26 | 26 |
|
27 | 27 | memory_section = SystemPromptModule("memory", |
28 | 28 | "The following section shows the count of memories in archival memory and chat history memory and the current content of your core memory:") |
29 | 29 | date_time_section = SystemPromptModule("current_date_time", "The following section shows the current date and time:") |
30 | 30 |
|
31 | | -example_section = SystemPromptModule("example", |
32 | | - "The following examples show you which kind of responses you should write to the user based on the current scenario:\n\n") |
| 31 | +example_section = SystemPromptModule("examples", |
| 32 | + "The following examples show you which kind of responses you should write to the user based on the current scenario:", suffix="Always remember to never write actions or dialogue for the user! Always let the user decide on actions or dialogue!") |
33 | 33 | example_section.set_content(examples) |
34 | 34 | memory_intro_section = SystemPromptModule("memory_intro", |
35 | 35 | "To support you in your task as a game master and to help you remembering things, you have access to 3 different types of memory.", |
|
39 | 39 | user_input = input(">") |
40 | 40 | if user_input == "exit": |
41 | 41 | break |
42 | | - query = agent_event_memory.event_memory_manager.session.query(Event).all() |
43 | | - memory_section.set_content( |
44 | | - f"Archival Memories:{agent_retrieval_memory.retrieval_memory.collection.count()}\nConversation History Entries:{len(query)}\n\nCore Memory Content:\n{agent_core_memory.get_core_memory_view().strip()}") |
| 42 | + update_memory_section(memory_section) |
45 | 43 | date_time_section.set_content(datetime.datetime.now().strftime("%d.%m.%Y") + "\nFormat: dd.mm.yyyy") |
46 | 44 |
|
| 45 | + agent_event_memory.add_event_to_queue(Roles.user, wrap_player_message_in_xml_tags_json_mode(user_input)) |
47 | 46 | agent_output = agent.get_chat_response( |
48 | | - "<player_message>\n" + user_input + "\n</player_message>\n<response_format>\nJSON function call.\n</response_format>", |
| 47 | + chat_history=agent_event_memory.get_event_memory_manager().build_chat_history(), |
49 | 48 | llm_sampling_settings=settings, |
50 | 49 | system_prompt_modules=[memory_intro_section, memory_section, date_time_section], |
51 | 50 | structured_output_settings=output_settings) |
52 | 51 |
|
53 | 52 | while True: |
54 | | - query = agent_event_memory.event_memory_manager.session.query(Event).all() |
55 | | - memory_section.set_content( |
56 | | - f"Archival Memories:{agent_retrieval_memory.retrieval_memory.collection.count()}\nConversation History Entries:{len(query)}\n\nCore Memory Content:\n{agent_core_memory.get_core_memory_view().strip()}") |
| 53 | + update_memory_section(memory_section) |
57 | 54 | date_time_section.set_content(datetime.datetime.now().strftime("%d.%m.%Y") + "\nFormat: dd.mm.yyyy") |
58 | 55 |
|
59 | 56 | if agent_output[0]["function"] == "write_message_to_player": |
| 57 | + agent_event_memory.add_event_to_queue(Roles.tool, generate_write_message_with_examples(examples=example_section.get_formatted_content())) |
60 | 58 | output = agent.get_chat_response( |
61 | | - f"<function_response>\nWrite your message to the user.\n{example_section.prefix + example_section.content}</function_response>\n<response_format>\nText\n</response_format>", |
62 | | - role=Roles.tool, add_message_to_chat_history=False, add_response_to_chat_history=False, |
| 59 | + chat_history=agent_event_memory.get_event_memory_manager().build_chat_history(), |
| 60 | + add_message_to_chat_history=False, add_response_to_chat_history=False, |
63 | 61 | system_prompt_modules=[memory_intro_section, memory_section, date_time_section], |
64 | 62 | llm_sampling_settings=settings) |
65 | | - agent.chat_history.add_message({"role": Roles.tool, |
66 | | - "content": f"<function_response>\nWrite your message to the user.\n</function_response>\n<response_format>\nText\n</response_format>"}) |
67 | | - agent.chat_history.add_message({"role": Roles.assistant, "content": output}) |
| 63 | + agent_event_memory.add_event_to_queue(Roles.tool, generate_fake_write_message()) |
| 64 | + agent_event_memory.add_event_to_queue(Roles.assistant, output) |
| 65 | + |
68 | 66 | print(output) |
69 | 67 | break |
70 | | - agent_output = agent.get_chat_response("<function_response>\n" + agent_output[0][ |
71 | | - "return_value"] + "\n</function_response>\n<response_format>\nJSON function call.\n</response_format>", |
72 | | - role=Roles.tool, llm_sampling_settings=settings, |
| 68 | + |
| 69 | + agent_event_memory.add_event_to_queue(Roles.tool, wrap_function_response_in_xml_tags_json_mode(agent_output[0]["return_value"])) |
| 70 | + agent_output = agent.get_chat_response(chat_history=agent_event_memory.get_event_memory_manager().build_chat_history(), |
| 71 | + llm_sampling_settings=settings, |
73 | 72 | system_prompt_modules=[memory_intro_section, memory_section, |
74 | 73 | date_time_section], |
75 | 74 | structured_output_settings=output_settings) |
0 commit comments