From 19d177e7b1bac4c6d1677a4cdf787caad2be4783 Mon Sep 17 00:00:00 2001
From: ziming <2216646743@qq.com>
Date: Tue, 26 Sep 2023 12:51:28 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8C=89=E7=85=A7=E8=A7=84=E8=8C=83=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../reflect_and_retrieve/GA_memory_storage.py | 103 +++++++++++-----
metagpt/reflect_and_retrieve/gpt_structure.py | 70 ++++++++---
metagpt/reflect_and_retrieve/pycodetester.py | 3 +
metagpt/reflect_and_retrieve/reflect.py | 52 +++++----
metagpt/reflect_and_retrieve/retrive.py | 110 +++++++++---------
metagpt/reflect_and_retrieve/run_gpt.py | 58 ++++-----
6 files changed, 254 insertions(+), 142 deletions(-)
create mode 100644 metagpt/reflect_and_retrieve/pycodetester.py
diff --git a/metagpt/reflect_and_retrieve/GA_memory_storage.py b/metagpt/reflect_and_retrieve/GA_memory_storage.py
index 31ccdaa0d..b960b73f3 100644
--- a/metagpt/reflect_and_retrieve/GA_memory_storage.py
+++ b/metagpt/reflect_and_retrieve/GA_memory_storage.py
@@ -4,73 +4,124 @@
# author: didi
# Date:9.24
-from run_gpt import run_gpt_prompt_chat_poignancy,run_gpt_random_concept
+from run_gpt import run_gpt_prompt_chat_poignancy, run_gpt_random_concept
from gpt_structure import embedding
from retrive import agent_retrive
import time
import json
# Meomry_basic 类
+
+
class Meomry_basic:
def __init__(
- self,created_time,accessed_time,
+ self, created_time, accessed_time,
description,
poignancy,
- embedding_key = None) -> None:
+ embedding_key=None) -> None:
+ """
+ Initializes a basic memory object.
+
+ Args:
+ created_time (datetime): The time when the memory was created.
+ accessed_time (datetime): The time when the memory was last accessed.
+ description (str): The description of the memory.
+ poignancy (int): The level of emotional intensity associated with the memory.
+ embedding_key (Optional[str]): The embedding key for the memory (to avoid redundant vectorization).
+
+ Returns:
+ None
+ """
self.created_time = created_time # 记忆创建时间
self.accessed_time = accessed_time # 记忆上次调用时间
self.description = description # 记忆描述
self.poignancy = poignancy # 记忆心酸程度
- if embedding_key == None: # 记忆emmbeding key(避免重复向量化花钱)
+ if embedding_key is None: # 记忆emmbeding key(避免重复向量化花钱)
self.embedding_key = embedding(self.description)
- else:
- self.embedding_key = embedding_key
+ else:
+ self.embedding_key = embedding_key
# Agent Memory 类
-class Agent_memeory:
- def __init__(self,name,iss,
- memory_forget = 0.99,
- memories_list=[],memory_path = None) -> None:
+
+class Agent_memory(object):
+
+ def __init__(self, name: str, iss: str,
+ memory_forget: float = 0.99,
+ memories_list: list[Meomry_basic] = [], memory_path: str = None) -> None:
+ '''
+ 定义Agent,替换原有Agent使用,需要其他人根据需求补全功能。
+ Attributes:
+ name:agent name
+ iss:agent iss(性格特征)
+ memory_forget:agent 记忆遗忘速率(计算近因性)
+ memories_list:agent 记忆JSON文件存储地址
+ memory_path:记忆存储地址
+ '''
self.name = name # agent name
self.iss = iss # agent iss(性格特征)
self.memories_list = memories_list # agent 记忆列表
self.concept_forget = memory_forget # agent 记忆遗忘速率(计算近因性)
self.memory_path = memory_path # agent 记忆JSON文件存储地址
- self.curr_time = time.time() # agent 当前时间(现在使用的time.time(),等到环境搭好之后使用游戏内时间)
+ # agent 当前时间(现在使用的time.time(),等到环境搭好之后使用游戏内时间)
+ self.curr_time = time.time()
# 若给到memory_path 进行记忆初始化
- if memory_path:
+ if memory_path:
self.memories_list = self.memory_load(memory_path)
- def memory_save(self,PATH):
- # 将Memory存储在指定PATH的JSON文件中,命名为"{self.name}'s memory"
+ def memory_save(self, PATH: str) -> None:
+ '''
+ 将Memory存储在指定PATH的JSON文件中,命名为"{self.name}'s memory
+ Args:
+ PATH:str
+ Return:
+ None
+ '''
with open(PATH, 'w') as file:
memory_data = [mem.__dict__ for mem in self.memories_list]
json.dump(memory_data, file)
- def memory_load(self,PATH):
+ def memory_load(self, PATH: str) -> list[Meomry_basic]:
"""
- 将Memory从指定路径的JSON文件中Load出来,返回一个记忆列表;如果load失败,返回一个空列表
+ 将Memory从指定路径的JSON文件中Load出来,返回一个记忆列表;如果load失败,返回一个空列表。
+ Args:
+ PATH:str
+ Return:
+ List(Meomry_basic)
"""
try:
- with open(PATH,'r') as file:
+ with open(PATH, 'r') as file:
memory_data = json.load(file)
- self.memories_list = [Meomry_basic(**mem) for mem in memory_data]
+ self.memories_list = [Meomry_basic(
+ **mem) for mem in memory_data]
return self.memories_list
- except:
+ except OSError:
return []
-
+
if __name__ == "__main__":
# 例子,构建John Agent,实现retrive
- John_iss = "John Lin is a pharmacy shopkeeper at the Willow Market and Pharmacy who loves to help people. He is always looking for ways to make the process of getting medication easier for his customers; John Lin is living with his wife, Mei Lin, who is a college professor, and son, Eddy Lin, who is a student studying music theory; John Lin loves his family very much; John Lin has known the old couple next-door, Sam Moore and Jennifer Moore, for a few years; John Lin thinks Sam Moore is a kind and nice man; John Lin knows his neighbor, Yuriko Yamamoto, well; John Lin knows of his neighbors, Tamara Taylor and Carmen Ortiz, but has not met them before; John Lin and Tom Moreno are colleagues at The Willows Market and Pharmacy; John Lin and Tom Moreno are friends and like to discuss local politics together; John Lin knows the Moreno family somewhat well — the husband Tom Moreno and the wife Jane Moreno."
- John = Agent_memeory("John",John_iss,memory_path="agent_memories/John_memory.json")
+ John_iss = """John Lin is a pharmacy shopkeeper at the Willow Market and Pharmacy who loves to help people.
+ He is always looking for ways to make the process of getting medication easier for his customers;
+ John Lin is living with his wife, Mei Lin, who is a college professor, and son,
+ Eddy Lin, who is a student studying music theory; John Lin loves his family very much;
+ John Lin has known the old couple next-door,
+ Sam Moore and Jennifer Moore, for a few years;
+ John Lin thinks Sam Moore is a kind and nice man;
+ John Lin knows his neighbor, Yuriko Yamamoto, well;
+ John Lin knows of his neighbors, Tamara Taylor and Carmen Ortiz,
+ but has not met them before;
+ John Lin and Tom Moreno are colleagues at The Willows Market and Pharmacy;
+ John Lin and Tom Moreno are friends and like to discuss local politics together;
+ John Lin knows the Moreno family somewhat well — the husband Tom Moreno and the wife Jane Moreno."""
+ John = Agent_memory(
+ "John", John_iss, memory_path="agent_memories/John_memory.json")
for i in range(3):
memory = run_gpt_random_concept()
curr_time = time.time()
- poignancy = run_gpt_prompt_chat_poignancy(John,memory)
- M = Meomry_basic(curr_time,curr_time,memory,poignancy)
+ poignancy = run_gpt_prompt_chat_poignancy(John, memory)
+ M = Meomry_basic(curr_time, curr_time, memory, poignancy)
John.memories_list.append(M)
John.memory_save(John.memory_path)
@@ -80,9 +131,7 @@ if __name__ == "__main__":
print(f"心酸程度为:{John.memories_list[i].poignancy}")
query = "How has John's personal connection with his neighbors, such as the Moores and Yuriko, influenced his role as a pharmacy shopkeeper?"
- Top_v = agent_retrive(John,query,10,3)
+ Top_v = agent_retrive(John, query, 10, 3)
print(f"John的相关信息:{Top_v}")
# John的相关信息:{'Had a friendly chat with Yuriko about her garden.': 2.4992317730827667, 'Helped Mrs. Moore carry groceries into her house.': 1.957656720441911, 'Discussed local politics with Tom Moreno.': 1.9458268038234035}
-
-
\ No newline at end of file
diff --git a/metagpt/reflect_and_retrieve/gpt_structure.py b/metagpt/reflect_and_retrieve/gpt_structure.py
index a1226f801..c5397dfd3 100644
--- a/metagpt/reflect_and_retrieve/gpt_structure.py
+++ b/metagpt/reflect_and_retrieve/gpt_structure.py
@@ -6,31 +6,61 @@
import openai
openai.api_key = "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"
-openai.proxy='http://127.0.0.1:7000'
+openai.proxy = 'http://127.0.0.1:7000'
# 直接调用Prompt生成
+
+
def response_generate(prompt):
+ """
+ 通过将特殊指令加入Prompt生成最终的响应。
+
+ 参数:
+ - prompt:要生成响应的提示文本。
+ - special_instruction:要加入Prompt的特殊指令。
+ - example_output(可选):示例输出的JSON字符串。
+
+ 返回:
+ 生成的最终响应。
+
+ """
completion = openai.Completion.create(
model="gpt-3.5-turbo-instruct",
- prompt= prompt,
+ prompt=prompt,
temperature=0,
- max_tokens = 500,
- top_p = 1,
- stream = False,
- frequency_penalty = 0,
- presence_penalty = 0
+ max_tokens=500,
+ top_p=1,
+ stream=False,
+ frequency_penalty=0,
+ presence_penalty=0
)
return (completion.choices[0].text)
# 特殊指令加入Prompt生成
-def final_response(prompt,special_instruction,example_output = None):
+
+
+def final_response(prompt, special_instruction, example_output=None):
+ """
+ 通过将特殊指令加入Prompt生成最终的响应。
+
+ 参数:
+ - prompt:要生成响应的提示文本。
+ - special_instruction:要加入Prompt的特殊指令。
+ - example_output(可选):示例输出的JSON字符串。
+
+ 返回:
+ 生成的最终响应。
+
+ """
prompt = '"""\n' + prompt + '\n"""\n'
prompt += f"Output the response to the prompt above in json. {special_instruction}\n"
- if example_output:
+ if example_output:
prompt += "Example output json:\n"
prompt += '{"output": "' + str(example_output) + '"}'
return response_generate(prompt)
# prompt填充模板
+
+
def prompt_generate(curr_input, prompt_lib_file):
"""
Takes in the current input (e.g. comment that you want to classifiy) and
@@ -45,24 +75,36 @@ def prompt_generate(curr_input, prompt_lib_file):
RETURNS:
a str prompt that will be sent to OpenAI's GPT server.
"""
- if type(curr_input) == type("string"):
+ if type(curr_input) == type("string"):
curr_input = [curr_input]
curr_input = [str(i) for i in curr_input]
f = open(prompt_lib_file, "r")
prompt = f.read()
f.close()
- for count, i in enumerate(curr_input):
+ for count, i in enumerate(curr_input):
prompt = prompt.replace(f"!!", i)
- if "###" in prompt:
- prompt = prompt.split("###")[1]
+ if "###" in prompt:
+ prompt = prompt.split(
+ "###")[1]
return prompt.strip()
# 使用OpenAI embedding库进行存储
+
+
def embedding(query):
+ """
+ Generates an embedding for the given query.
+
+ Args:
+ query (str): The text query to be embedded.
+
+ Returns:
+ str: The embedding key generated for the query.
+ """
embedding_result = openai.Embedding.create(
model="text-embedding-ada-002",
input=query
)
embedding_key = embedding_result['data'][0]["embedding"]
- return embedding_key
\ No newline at end of file
+ return embedding_key
diff --git a/metagpt/reflect_and_retrieve/pycodetester.py b/metagpt/reflect_and_retrieve/pycodetester.py
new file mode 100644
index 000000000..30c9abaec
--- /dev/null
+++ b/metagpt/reflect_and_retrieve/pycodetester.py
@@ -0,0 +1,3 @@
+import pycodestyle as pcs
+checker = pcs.StyleGuide()
+checker.input_dir('./')
diff --git a/metagpt/reflect_and_retrieve/reflect.py b/metagpt/reflect_and_retrieve/reflect.py
index ae6487918..bf219073b 100644
--- a/metagpt/reflect_and_retrieve/reflect.py
+++ b/metagpt/reflect_and_retrieve/reflect.py
@@ -4,72 +4,82 @@ from logging import Logger
import time
from gpt_structure import final_response
import run_gpt
-from GA_memory_storage import Agent_memeory,Meomry_basic
+from GA_memory_storage import Agent_memory, Meomry_basic
from retrive import agent_retrive
'''
首先
'''
+
+
def agent_reflect(agent):
'''
agent:agent本身
'''
pass
-def generate_focus_point(memories_list,n=3):
- wait_sorted_mem=[[i.accessed_time, i] for i in memories_list]
- sorted_memories=sorted(wait_sorted_mem, key=lambda x: x[0])
- memorys=[i for created, i in sorted_memories]
- statements=''
+
+def generate_focus_point(memories_list, n=3):
+ wait_sorted_mem = [[i.accessed_time, i] for i in memories_list]
+ sorted_memories = sorted(wait_sorted_mem, key=lambda x: x[0])
+ memorys = [i for created, i in sorted_memories]
+ statements = ''
for i in memorys:
statements += i.description + "\n"
- prompt='''
+ prompt = '''
{statements}
Given only the information above, what are {num_question} most salient high-level questions we can answer about the subjects grounded in the statements?
'''
example_output = '["What should Jane do for lunch", "Does Jane like strawberry", "Who is Jane"]'
- out = final_response(prompt.format(statements=statements,num_question=n), "Output must be a list of str.",example_output)
+ out = final_response(prompt.format(statements=statements, num_question=n),
+ "Output must be a list of str.", example_output)
try:
poi_dict = json.loads(out)
return (poi_dict['output'])
except:
return out
-def generate_insights_and_evidence(agent,memories_list,question, n=5):
- agent_retrive(agent,question,20,10)
+
+def generate_insights_and_evidence(agent, memories_list, question, n=5):
+ agent_retrive(agent, question, 20, 10)
statements = ""
- for count, mem in enumerate(memories_list):
+ for count, mem in enumerate(memories_list):
statements += f'{str(count)}. {mem.description}\n'
- prompt='''
+ prompt = '''
Input:
{statements}
What {n} high-level insights can you infer from the above statements?
You should return a list of list[str,list] . The first element is the insight you have found.The second element is the
'''
-
- ret = final_response(prompt.format(question=question,statements=statements,n=n), "['insightA',[1,2,3]]")
+
+ ret = final_response(prompt.format(
+ question=question, statements=statements, n=n), "['insightA',[1,2,3]]")
try:
insight_list = json.loads(ret)
- for insight,index in insight_list:
- agent.memory_list.append(Meomry_basic(time.time(),None,insight,None,None))
+ for insight, index in insight_list:
+ agent.memory_list.append(Meomry_basic(
+ time.time(), None, insight, None, None))
return (insight_list)
except:
Logger.error('我们无法获得想要的返回。')
return ret
+
if __name__ == "__main__":
# 例子,构建John Agent,实现retrive
John_iss = "John Lin is a pharmacy shopkeeper at the Willow Market and Pharmacy who loves to help people. He is always looking for ways to make the process of getting medication easier for his customers; John Lin is living with his wife, Mei Lin, who is a college professor, and son, Eddy Lin, who is a student studying music theory; John Lin loves his family very much; John Lin has known the old couple next-door, Sam Moore and Jennifer Moore, for a few years; John Lin thinks Sam Moore is a kind and nice man; John Lin knows his neighbor, Yuriko Yamamoto, well; John Lin knows of his neighbors, Tamara Taylor and Carmen Ortiz, but has not met them before; John Lin and Tom Moreno are colleagues at The Willows Market and Pharmacy; John Lin and Tom Moreno are friends and like to discuss local politics together; John Lin knows the Moreno family somewhat well — the husband Tom Moreno and the wife Jane Moreno."
- John = Agent_memeory("John",John_iss,memory_path="agent_memories/John_memory.json")
+ John = Agent_memory(
+ "John", John_iss, memory_path="agent_memories/John_memory.json")
# John的相关信息:{'Had a friendly chat with Yuriko about her garden.': 2.4992317730827667, 'Helped Mrs. Moore carry groceries into her house.': 1.957656720441911, 'Discussed local politics with Tom Moreno.': 1.9458268038234035}
- A=generate_focus_point(John.memories_list)
-
+ A = generate_focus_point(John.memories_list)
+
for i in A:
- B=generate_insights_and_evidence(John,John.memories_list,question=A[0])
+ B = generate_insights_and_evidence(
+ John, John.memories_list, question=A[0])
print(type(B))
print(B)
'''
这里是输出,list形式,返回给记忆。
[['The pharmacy is a friendly and helpful community.', [0, 2, 9, 12]], ['The pharmacy is a place where people come for more than just medication.', [3, 5, 13, 14]], ['The pharmacy is a place where people come for advice and conversation.', [0, 2, 6, 9, 12]], ['The pharmacy is a place where people come for assistance with daily tasks.', [3, 5, 13, 14]], ['The pharmacy is a place where people come for political discussions.', [1]]]
- '''
\ No newline at end of file
+ '''
diff --git a/metagpt/reflect_and_retrieve/retrive.py b/metagpt/reflect_and_retrieve/retrive.py
index f3e1fc4c9..9a75a5c29 100644
--- a/metagpt/reflect_and_retrieve/retrive.py
+++ b/metagpt/reflect_and_retrieve/retrive.py
@@ -9,10 +9,13 @@ from numpy.linalg import norm
from gpt_structure import embedding
# 实现三(2)合一搜索
-def agent_retrive(agent,query,n,topk):
+
+
+def agent_retrive(agent, query, n, topk):
# 将记忆列表按照Nodes[i].accessed_time排列,仅取前十个,如果不够10个就取现有的所有
Nodes = agent.memories_list
- sorted_nodes = sorted(Nodes, key=lambda node: node.accessed_time,reverse=True)
+ sorted_nodes = sorted(
+ Nodes, key=lambda node: node.accessed_time, reverse=True)
Nodes = sorted_nodes[:n] if len(sorted_nodes) >= n else sorted_nodes
# 创建一个分数列表
@@ -25,74 +28,88 @@ def agent_retrive(agent,query,n,topk):
"relevance":搜索结果
}
"""
- Score_list = extract_importance(Nodes,Score_list)
- Score_list = extract_recency(Score_list) # 计算近因性函数还没有实现,目前都是1
- Score_list = extract_relevance(Score_list,query)
+ Score_list = extract_importance(Nodes, Score_list)
+ Score_list = extract_recency(Score_list) # 计算近因性函数还没有实现,目前都是1
+ Score_list = extract_relevance(Score_list, query)
- Score_list = normalize_Socre_floats(Score_list,0,1)
- total_dict = {}
- gw = [1,1,1] # 三个因素的权重,重要性,近因性,相关性
+ Score_list = normalize_Socre_floats(Score_list, 0, 1)
+ total_dict = {}
+ gw = [1, 1, 1] # 三个因素的权重,重要性,近因性,相关性
for i in range(len(Score_list)):
total_score = (Score_list[i]['importance']*gw[0] +
Score_list[i]['recency']*gw[1] +
Score_list[i]['relevance']*gw[2]
- )
- total_dict[Score_list[i]['memory'].description] = total_score
-
- result = top_highest_x_values(total_dict,topk)
+ )
+ total_dict[Score_list[i]['memory'].description] = total_score
+
+ result = top_highest_x_values(total_dict, topk)
return result
+
def top_highest_x_values(d, x):
- top_v = dict(sorted(d.items(),
- key=lambda item: item[1],
- reverse=True)[:x])
- return top_v
+ top_v = dict(sorted(d.items(),
+ key=lambda item: item[1],
+ reverse=True)[:x])
+ return top_v
# 抽取重要性
-def extract_importance(Nodes,Score_list):
+
+
+def extract_importance(Nodes, Score_list):
for i in range(len(Nodes)):
- Score = {"memory":Nodes[i],
- "importance":Nodes[i].poignancy
+ Score = {"memory": Nodes[i],
+ "importance": Nodes[i].poignancy
}
Score_list.append(Score)
return Score_list
# 抽取相关性
-def extract_relevance(Score_list,query):
+
+
+def extract_relevance(Score_list, query):
query_embedding = embedding(query)
# 进行
for i in range(len(Score_list)):
- result = cos_sim(Score_list[i]["memory"].embedding_key,query_embedding)
- Score_list[i]['relevance'] = result
+ result = cos_sim(
+ Score_list[i]["memory"].embedding_key, query_embedding)
+ Score_list[i]['relevance'] = result
return Score_list
# 抽取近因性
+
+
def extract_recency(Score_list):
for i in range(len(Score_list)):
- Score_list[i]['recency'] = 1
+ Score_list[i]['recency'] = 1
return Score_list
# 计算余弦相似度
-def cos_sim(a, b):
- return dot(a, b)/(norm(a)*norm(b))
+
+
+def cos_sim(a, b):
+ return dot(a, b)/(norm(a)*norm(b))
# 单个列表归一化
-def normalize_List_floats(Single_list,target_min, target_max):
+
+
+def normalize_List_floats(Single_list, target_min, target_max):
min_val = min(Single_list)
max_val = max(Single_list)
range_val = max_val - min_val
- if range_val == 0:
+ if range_val == 0:
for i in range(len(Single_list)):
- Single_list[i] = (target_max - target_min)/2
- else:
+ Single_list[i] = (target_max - target_min)/2
+ else:
for i in range(len(Single_list)):
- Single_list[i] = ((Single_list[i] - min_val) * (target_max - target_min)
- / range_val + target_min)
+ Single_list[i] = ((Single_list[i] - min_val) * (target_max - target_min)
+ / range_val + target_min)
return Single_list
# 整体归一化
+
+
def normalize_Socre_floats(Score_list, target_min, target_max):
importance_list = []
@@ -100,33 +117,20 @@ def normalize_Socre_floats(Score_list, target_min, target_max):
recency_list = []
for i in range(len(Score_list)):
- importance_list.append(Score_list[i]['importance'])
- relevance_list.append(Score_list[i]['relevance'])
- recency_list.append(Score_list[i]['recency'])
+ importance_list.append(Score_list[i]['importance'])
+ relevance_list.append(Score_list[i]['relevance'])
+ recency_list.append(Score_list[i]['recency'])
# 进行归一化操作
- importance_list = normalize_List_floats(importance_list,target_min, target_max)
- relevance_list = normalize_List_floats(relevance_list,target_min, target_max)
- recency_list =normalize_List_floats(recency_list,target_min, target_max)
+ importance_list = normalize_List_floats(
+ importance_list, target_min, target_max)
+ relevance_list = normalize_List_floats(
+ relevance_list, target_min, target_max)
+ recency_list = normalize_List_floats(recency_list, target_min, target_max)
for i in range(len(Score_list)):
Score_list[i]['importance'] = importance_list[i]
Score_list[i]['relevance'] = relevance_list[i]
Score_list[i]['recency'] = recency_list[i]
-
+
return Score_list
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/metagpt/reflect_and_retrieve/run_gpt.py b/metagpt/reflect_and_retrieve/run_gpt.py
index 122ba8696..71d2a7a3d 100644
--- a/metagpt/reflect_and_retrieve/run_gpt.py
+++ b/metagpt/reflect_and_retrieve/run_gpt.py
@@ -6,17 +6,19 @@
import random
import json
-from gpt_structure import final_response,prompt_generate
+from gpt_structure import final_response, prompt_generate
-# 使用GPT衡量心酸程度
-def run_gpt_prompt_chat_poignancy(agent,event_description):
+# 使用GPT衡量心酸程度
+
+
+def run_gpt_prompt_chat_poignancy(agent, event_description):
"""
使用GA中的run GPT构造,具体的代码可以参考昨天GPT的内容
https://chat.openai.com/c/afddac31-300e-427b-9947-4b3ca16bd3a1
其中输入的ISS是identity stable set
"""
- def create_prompt_input(agent,event_description):
- prompt_input = [agent.name,
+ def create_prompt_input(agent, event_description):
+ prompt_input = [agent.name,
agent.iss,
agent.name,
event_description]
@@ -24,35 +26,37 @@ def run_gpt_prompt_chat_poignancy(agent,event_description):
# 1. Prompt构建
# 2. Instruction给出
- prompt_template = "Prompt_template/poignancy_chat_v1.txt" ########
- prompt_input = create_prompt_input(agent, event_description) ########
+ prompt_template = "Prompt_template/poignancy_chat_v1.txt"
+ prompt_input = create_prompt_input(agent, event_description)
prompt = prompt_generate(prompt_input, prompt_template)
special_instruction = "The output should ONLY contain ONE integer value on the scale of 1 to 10."
- poignancy = final_response(prompt,special_instruction)
+ poignancy = final_response(prompt, special_instruction)
try:
poi_dict = json.loads(poignancy)
return (poi_dict['poignancy'])
except:
return poignancy
-
+
# 返回John随机记忆
+
+
def run_gpt_random_concept():
random_memories = [
- "Helped Mrs. Moore carry groceries into her house.",
- "Had a friendly chat with Yuriko about her garden.",
- "Met Tom Moreno for coffee during our lunch break.",
- "Talked to Mei about their upcoming vacation plans.",
- "Eddy played his new music composition for me.",
- "Helped a customer find a specific medication.",
- "John divorced his wife because he was in love with someone else",
- "Helped Mrs. Moore carry groceries into her house.",
- "Had a friendly chat with Yuriko about her garden.",
- "Met Tom Moreno for coffee during our lunch break.",
- "Talked to Mei about their upcoming vacation plans.",
- "Eddy played his new music composition for me.",
- "Helped a customer find a specific medication.",
- "Wished Carmen a good day as she passed by the pharmacy.",
- "Discussed local politics with Tom Moreno.",
- "Gave gardening tips to Mrs. Yamamoto.",
- "Saw Jane Moreno jogging in the morning."]
- return(random.choice(random_memories))
+ "Helped Mrs. Moore carry groceries into her house.",
+ "Had a friendly chat with Yuriko about her garden.",
+ "Met Tom Moreno for coffee during our lunch break.",
+ "Talked to Mei about their upcoming vacation plans.",
+ "Eddy played his new music composition for me.",
+ "Helped a customer find a specific medication.",
+ "John divorced his wife because he was in love with someone else",
+ "Helped Mrs. Moore carry groceries into her house.",
+ "Had a friendly chat with Yuriko about her garden.",
+ "Met Tom Moreno for coffee during our lunch break.",
+ "Talked to Mei about their upcoming vacation plans.",
+ "Eddy played his new music composition for me.",
+ "Helped a customer find a specific medication.",
+ "Wished Carmen a good day as she passed by the pharmacy.",
+ "Discussed local politics with Tom Moreno.",
+ "Gave gardening tips to Mrs. Yamamoto.",
+ "Saw Jane Moreno jogging in the morning."]
+ return (random.choice(random_memories))