-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathagent.py
55 lines (39 loc) · 1.4 KB
/
agent.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
'''
agent base class
'''
from typing import List, Dict, Any
from model import OpenAIChat
class OpenaiBasedAgent:
def __init__(self, name, role,system_prompt: str, model: OpenAIChat, state):
self.system_prompt = system_prompt
self.name = name
self.role = role
self.model = model
self.memory = []
self.state = state
def reply(self, message, instruction_message = None) -> str:
# append message to memory
# if message is str append
# if message is list 追加
if isinstance(message, list):
self.memory.extend(message)
if isinstance(message, str):
self.memory.append(message)
if self.system_prompt is None:
prompt = []
else:
prompt = [{'role': 'system', 'content': self.system_prompt}]
prompt.extend(self.model.format(
self.memory)
)
if instruction_message:
prompt.extend(instruction_message)
# call llm
# if response not in format, call llm again until response in format
raw_response = self.model(prompt)
return raw_response
def observe(self, x):
if isinstance(x, str):
self.memory.append(x)
elif isinstance(x, list):
self.memory.extend(x)