From 8636026c557dbb6bbad98e1c290416a052fcbed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8E=98=E6=9D=83=20=E9=A9=AC?= Date: Fri, 15 Dec 2023 20:00:17 +0800 Subject: [PATCH] feat: merge fixbug/rfc135_merge_geekan_cli_etc_1445 --- metagpt/memory/brain_memory.py | 7 +-- metagpt/utils/mermaid.py | 100 +++++++++++++++++---------------- 2 files changed, 55 insertions(+), 52 deletions(-) diff --git a/metagpt/memory/brain_memory.py b/metagpt/memory/brain_memory.py index be3736100..decbb6a8b 100644 --- a/metagpt/memory/brain_memory.py +++ b/metagpt/memory/brain_memory.py @@ -15,12 +15,11 @@ from typing import Dict, List, Optional import openai import pydantic -from metagpt import Message from metagpt.config import CONFIG from metagpt.const import DEFAULT_LANGUAGE, DEFAULT_MAX_TOKENS from metagpt.llm import LLMType from metagpt.logs import logger -from metagpt.schema import RawMessage +from metagpt.schema import Message, RawMessage from metagpt.utils.redis import Redis @@ -45,12 +44,12 @@ class BrainMemory(pydantic.BaseModel): cacheable: bool = True def add_talk(self, msg: Message): - msg.add_tag(MessageType.Talk.value) + msg.role = "user" self.add_history(msg) self.is_dirty = True def add_answer(self, msg: Message): - msg.add_tag(MessageType.Answer.value) + msg.role = "assistant" self.add_history(msg) self.is_dirty = True diff --git a/metagpt/utils/mermaid.py b/metagpt/utils/mermaid.py index a1a6d462b..9aefeb5aa 100644 --- a/metagpt/utils/mermaid.py +++ b/metagpt/utils/mermaid.py @@ -93,55 +93,59 @@ async def mermaid_to_file(mermaid_code, output_file_without_suffix, width=2048, return 0 -MMC1 = """classDiagram -class Main { - -SearchEngine search_engine - +main() str -} -class SearchEngine { - -Index index - -Ranking ranking - -Summary summary - +search(query: str) str -} -class Index { - -KnowledgeBase knowledge_base - +create_index(data: dict) - +query_index(query: str) list -} -class Ranking { - +rank_results(results: list) list -} -class Summary { - +summarize_results(results: list) str -} -class KnowledgeBase { - +update(data: dict) - +fetch_data(query: str) dict -} -Main --> SearchEngine -SearchEngine --> Index -SearchEngine --> Ranking -SearchEngine --> Summary -Index --> KnowledgeBase""" +MMC1 = """ +classDiagram + class Main { + -SearchEngine search_engine + +main() str + } + class SearchEngine { + -Index index + -Ranking ranking + -Summary summary + +search(query: str) str + } + class Index { + -KnowledgeBase knowledge_base + +create_index(data: dict) + +query_index(query: str) list + } + class Ranking { + +rank_results(results: list) list + } + class Summary { + +summarize_results(results: list) str + } + class KnowledgeBase { + +update(data: dict) + +fetch_data(query: str) dict + } + Main --> SearchEngine + SearchEngine --> Index + SearchEngine --> Ranking + SearchEngine --> Summary + Index --> KnowledgeBase +""" -MMC2 = """sequenceDiagram -participant M as Main -participant SE as SearchEngine -participant I as Index -participant R as Ranking -participant S as Summary -participant KB as KnowledgeBase -M->>SE: search(query) -SE->>I: query_index(query) -I->>KB: fetch_data(query) -KB-->>I: return data -I-->>SE: return results -SE->>R: rank_results(results) -R-->>SE: return ranked_results -SE->>S: summarize_results(ranked_results) -S-->>SE: return summary -SE-->>M: return summary""" +MMC2 = """ +sequenceDiagram + participant M as Main + participant SE as SearchEngine + participant I as Index + participant R as Ranking + participant S as Summary + participant KB as KnowledgeBase + M->>SE: search(query) + SE->>I: query_index(query) + I->>KB: fetch_data(query) + KB-->>I: return data + I-->>SE: return results + SE->>R: rank_results(results) + R-->>SE: return ranked_results + SE->>S: summarize_results(ranked_results) + S-->>SE: return summary + SE-->>M: return summary +""" if __name__ == "__main__": loop = asyncio.new_event_loop()